求给那些边增加容量能增加总的流量显然,不是满流的边,增加也没有用,所以要增加容量的是那些满流的边。做法 求一次最大流 判断有几条边满流且能被源点和汇点搜到View Code #include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAX=100005;const int INF=1000000000;struct{ int v,c,next;}edge[1000000];int E,head[MAX];int gap[MAX],cur[MAX];int Read More
posted @ 2012-04-10 20:46 Because Of You Views(451) Comments(0) Diggs(0) Edit
代码很好懂,不解释了View Code #include<cstdio>#include<cstring>const int maxn = 50010;int c[maxn];void add(int x,int d){ for(;x<maxn;x+=x&-x) c[x]+=d;}int sum(int x){ int ans=0; for(;x>0;x-=x&-x) ans+=c[x]; return ans;}int bin(int val,int n){ int l=1,r=n+1,best=n+2; while(l<=r)... Read More
posted @ 2012-04-10 20:34 Because Of You Views(383) Comments(0) Diggs(0) Edit
枚举区间建图,好像也可以用多重匹配来做,不过不是很熟新建源点向每头牛连边牛向barns连边barns向汇点连边,边权为barns的容量,其实就是一个二分图最后求最大流就好了View Code #include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAX=100005;const int INF=1000000000;struct{ int v,c,next;}edge[1000000];int E,head[MAX];int gap[MAX],cur Read More
posted @ 2012-04-10 20:29 Because Of You Views(296) Comments(0) Diggs(0) Edit