网络流
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
善意的投票(最大流最小割,建图技巧)
题意:有m对好朋友关系 每个人有不同的想法, 每个人可以改变自己的想法,如果改变的话会让答案值+1 问好朋友之间冲突的个数最小值。 思路: 把不同的想法的点,分别与S和T连边,如果两个人之间是好朋友就代表可能会有冲突,那么就连双向边。 #include<bits/stdc++.h> using namespace std; const int N=5510,M=N*100*2; int h[N],ne[M],e[M],idx,d[N],cur[N],q[N],f[M]; void add(in原创 2020-11-22 22:39:35 · 278 阅读 · 3 评论 -
(最大流,二分图的多重匹配) Magic Potion
题意:n个人,m个怪物,k瓶药水,每个人可以打死对应的集合里面的一个怪物,一碰药水可以让一个人多打死一个怪物,每个人最多只能用一瓶药水,问最多能打死多少个怪物 思路:想到了匹配,然后用最大流做,一开始想的建图是从超级原点连一条容量是n+k的边到虚拟节点,然后虚拟节点与所有勇士连一条容量是2的边,然后勇士与对应的怪物连1的边,怪物与汇点连1的边跑最大流,然后wa了,错误在于我们这样做默认勇士可以用药了,然后k等于0的时候,答案就不对了,所以正解是超级源点和所有勇士连1的边,药水节点与勇士连1的边,超级源点与.原创 2020-10-24 12:15:37 · 335 阅读 · 0 评论 -
最大流模板dinic
复杂度o n^2m 思路:bfs出分层图,不断dfs,用当前弧优化。 #include<bits/stdc++.h> using namespace std; const int N=10010; const int M=200010; int h[N],e[M],ne[M],f[M]; int cur[N],d[N]; int q[N],idx; int n,m,S,T; void add(int a,int b,int c) { e[idx]=b,ne[idx]=h[a],f[idx]=c原创 2020-10-23 15:42:13 · 236 阅读 · 0 评论