bzoj 1449 费用流】的更多相关文章

思路:先把没有进行的场次规定双方都为负,对于x胜y负 变为x + 1胜 y - 1 负所需要的代价为 2 * C[ i ] * x  - 2 * D[ i ] * y + C[ i ] + D[ i ], 我们根据这个拆边建图,对于a和b进行的一场w, w流出的流量为1,并指向a 和 b,然后跑费用流. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_…
每个格拆成两个点,出点连能到的点的入点,如果是箭头指向 方向费用就是0,要不就是1,源点连所有出点,所有入点连 汇点,然后费用流 /**************************************************************     Problem:     User: BLADEVIL     Language: Pascal     Result: Accepted     Time: ms     Memory: kb *******************…
思路: 我们可以列出几个不等式 用y0带进去变成等式 下-上 可以消好多东西 我们发现 等式左边的加起来=0 可以把每个方程看成一个点 正->负 连边 跑费用流即可 //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define int long long #define mem(…
思路: 最大费用最大流 i->i+1 连边k 费用0 i->i+m (大于n的时候就连到汇) 连边1 费用a[i] //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define N 1005 #define M 2222222 #define mem(x,y) memset…
//可以网络流,但是要怎么分配每辆车让谁维修以及维修顺序呢.可以考虑每辆车维修时间对总结果的贡献,把每个修车人拆成n个点共n*m个点, //n辆车连向这n*m个点,流量1,费用k*修车时间,其中k(1=<k<=n)表示这辆车是这个技术人员修的倒数第k俩车,他后面k-1辆被同一个人维修的车 //都要等待他修好,因此他的贡献值就是k*维修时间.然后源点连向n辆车,n*m个点连向汇点. #include<iostream> #include<cstdio> #include&…
我们可以把初始状态转化为目标状态这一约束转化为将黑子移动到目标状态所需要的最少步数. 除了初始点和目标点之外,剩下的点如果被经过那么就会被交换两次,所以我们将一个点拆成3个点,a,b,c,新建附加源点source汇点sink.设每个点的交换次数为num[i],那么这个点的交换次数如果是奇数其实是没用的,那么我们连接(a,b,num[i] div 2,0),(b,c,num[i] div 2,0),这样代表这个点一共可以被经过num[i] div 2次,那么对于起始点和终点来说,因为不用被经过,所…
比较裸 源点连人,每个人连自己的工作,工作连汇,然后因为人的费用是 分度的,且是随工作数非降的,所以我们拆边,源点连到每个人s+1条边 容量是每段的件数,费用是愤怒 /**************************************************************     Problem:     User: BLADEVIL     Language: Pascal     Result: Accepted     Time: ms     Memory: kb *…
思路: 同BZOJ 1221 //By SiriusRen #include <queue> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define mem(x,y) memset(x,y,sizeof(x)) #define N 666666 #define inf 0x3f3f3f3f int cases,n,m,k,ed,cost[N]…
思路: 懒得写了 http://blog.csdn.net/werkeytom_ftd/article/details/51277482 //By SiriusRen #include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; #define int long long #defin…
[bzoj 1449] 球队收益(费用流) Description Input Output 一个整数表示联盟里所有球队收益之和的最小值. Sample Input 3 3 1 0 2 1 1 1 10 1 0 1 3 3 1 2 2 3 3 1 Sample Output 43 Hint Solution 这题费用流裸题好吧. 先假设所有队在接下来的比赛中都会输掉,算出收益. 但是一场比赛应该有且只有一支球队赢得比赛,所以真实收益和我们算出来的收益就会有一些差值,再计算最小的差值即可. 我们可…