摘要: 题目链接 题解: 图为一个基环树。 dfs找到环,对于环上的每一个点u, 确定与它连接的具有最小美观度的边的长度w, 把这个w值更新到与它连接的其他非环上点(minval[]数组),则u和与它连接的其他非环上点的答案即为所有边长度只和减去minval[i]。 Code: 1 #include <bi 阅读全文
posted @ 2020-01-31 19:49 feibilun 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解法: 初始n个节点,n颗树,每连一条边,减少一棵树。k棵树需要连n-k条边。。。1棵树需要连n-1条边。。。 给每条可以连的边按代价从小到大排个序,然后连n-k条边造k个最小生成树就可以了。 Code: 1 #include <bits/stdc++.h> 2 # define LL l 阅读全文
posted @ 2020-01-31 17:54 feibilun 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解法参见:https://www.luogu.com.cn/blog/cicos/solution-p2774# Code: 1 #include <bits/stdc++.h> 2 #define LL long long 3 #define INF 0x3f3f3f3f; 4 usin 阅读全文
posted @ 2020-01-31 16:25 feibilun 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解法: 首先考虑逆向思维,求最少要使用的士兵个数,转化为,初始的时候所有能放士兵的地方都放了士兵的情况下,最多能删掉多少个士兵。 1. 给每一行每一列分别建一个点,对于所有非障碍坐标(x,y),从x行对应的点 向 y列对应的点连一条容量为1的边,表示这个位置的士兵最多可以删除一次。 2. 阅读全文
posted @ 2020-01-31 16:17 feibilun 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题目链接 解法: 竞赛图没有自环,没有二元环;若竞赛图存在环,则一定存在三元环。 简单证明: 假设一个竞赛图存在一个 N 元环(大于三元),环上有连续三点 A , B , C ( 存在有向边 AB , BC ) 根据竞赛图的定义,一定存在有向边 CA 或 AC 中的一者。 情况 1 :若存在 CA 阅读全文
posted @ 2020-01-31 15:08 feibilun 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题目链接 方法1: bfs Code: #include <bits/stdc++.h> # define LL long long using namespace std; const int maxn=1000000+10; int N,M; vector<int> adj[maxn]; int 阅读全文
posted @ 2020-01-31 15:01 feibilun 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 题目链接 方法: 重点在建图!!!将一天拆成晚上和早上; 1. 从源点向每一天晚上连一条流量为当天所用餐巾x,费用为0的边; 2. 每一天早上向汇点连一条流量为当天所用餐巾x,费用为0的边; 3. 从每一天晚上向第二天晚上连一条流量为INF,费用为0的边,表示每天晚上可以将脏餐巾留到第二天晚上; 4 阅读全文
posted @ 2020-01-31 07:50 feibilun 阅读(120) 评论(0) 推荐(0) 编辑