
网络流(费用流)
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 1149 PIGS (AC这道题很不容易啊)网络流
题意:输入第一行给你n个猪圈,m个顾客。第二行n个数,分别表示第i个猪圈里有多少头猪。然后后m行,每行第一个数表示第i个人有k把钥匙,后k个数为他的钥匙能开的猪圈标号。最后一个数表示他需要多少头猪。所有开着门的猪圈里的猪能相互串。(人买走猪后就把猪圈锁上了)求最多能卖多少头猪。思路:一开始 没有思路,想了好久,终于建好图了(细节请见代码注释) 。接着就无限WA。WA。WA。憋了一下午。晚上李队长帮忙挑原创 2016-04-28 20:22:13 · 925 阅读 · 0 评论 -
Codeforces434D 网络流
思路: 题意:有n<=50个点,每个点有xi有[li, ri]种取值,-100 <= li <= ri <= 100,并且给定m<=100条边,每条边为u,v,d表示xu<=xv+d。 每个点value fi(x) = ai*x^2 + bi*x + ci。现在求一种合法的方案,使得权值和最大。思路:先不考虑的xu<=xv + d。那么建图: 首先考虑到每个点的权值可能为负,并且求最大原创 2017-01-04 10:15:03 · 531 阅读 · 0 评论 -
BZOJ 1391 网络流
vis[0]没有清零查一年…//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 55555#define M 3666666int n,m,xx,yy,first[N],vis[N],nxt[M],v[M],w[M],tot,all,jy,e原创 2017-01-04 15:17:57 · 697 阅读 · 0 评论 -
BZOJ 3931 Dijkstra+网络流
思路: (我能说按照题意模拟么)用long long inf 要开大…….//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define int long long#define N 1017#define M 999原创 2017-01-04 16:19:26 · 738 阅读 · 0 评论 -
POJ 3204 网络流的必须边
思路: 求一遍网络流 在残余网络上DFS 从起点DFS 从终点把边反向DFS 一个边跟起点连通 跟终点反向的边连通 ans++注:此题不能用tarjan 因为有边权为0的边 //By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace s原创 2016-12-28 15:21:37 · 370 阅读 · 0 评论 -
BZOJ 1797 网络流的可行边&必须边
求完网络流以后 tarjan一发 判一判//By SiriusRen#include <queue>#include <bitset>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 122222int n,m,s,t;struct Node{int x,y,w,原创 2016-12-28 15:23:02 · 579 阅读 · 0 评论 -
BZOJ 3130 二分+网络流
思路: 不被题目忽悠就是思路 二分一下max 判一下等不等于最大流 搞定7 9 1 1 2 3 1 3 3 2 3 3 3 4 2 3 5 2 3 6 1 4 7 2 5 7 2 6 7 2这里有组Bob是小数的例子//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <a原创 2017-01-05 16:19:04 · 353 阅读 · 0 评论 -
Codeforces 708D 费用流 (呃我们的考试题)
NB的题目背景 输入输出一样考试的时候貌似只有gzz一个人搞出来了 %gzz思路: 分情况讨论 add(x,y,C,E) C是费用 E是流量 1. f>c add(x,y,2,inf),add(y,x,0,f-c),add(y,x,1,c),ans+=f-c; 2. 否则add(x,y,1,c-f),add(x,y,2,inf),add(y,x,1,f); 因为原图中源汇流量不守恒原创 2017-01-05 17:56:37 · 1222 阅读 · 0 评论 -
BZOJ 1711 网络流
思路: 神建图源->饮料 边权为1 牛拆点 两个点之间的边权为1 饮料->左牛 边权为1 右牛->食品 边权为1 食品->汇边权为1//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=4444,M=原创 2017-01-05 18:01:03 · 642 阅读 · 0 评论 -
BZOJ 2424 DP OR 费用流
思路: 1.DP f[i][j]表示第i个月的月底 还剩j的容量 转移还是相对比较好想的……f[i][j+1]=min(f[i][j+1],f[i][j]+d[i]);if(j>=u[i+1])f[i+1][j-u[i+1]]=min(f[i+1][j-u[i+1]],f[i][j]+m*j);else f[i+1][0]=min(f[i+1][0],f[i][j]+d[i+1]*(u[i原创 2017-01-06 10:11:31 · 648 阅读 · 0 评论 -
BZOJ 3280 费用流
思路: 同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 0x3f3f3原创 2017-01-09 14:15:56 · 390 阅读 · 0 评论 -
BZOJ 1283 费用流
思路: 最大费用最大流 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 2222原创 2017-01-12 17:48:45 · 385 阅读 · 0 评论 -
BZOJ 3175 最大独立集
思路: 最大独立集嘛 用nlogn的Dinic做//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 888888int n,re[205][205],cnt,first[40050],next[N],v[N原创 2017-01-19 07:53:10 · 412 阅读 · 0 评论 -
POJ 3469 Dinic (二元关系)
题意: 思路: //By SiriusRen#include <queue>#include <cstdio>#include <cstring>using namespace std;#define mem(x,y) memset(x,y,sizeof(x))const int N=20005,M=880005;int first[N],vis[N],next[M],v[M]原创 2017-01-26 16:35:37 · 360 阅读 · 0 评论 -
BZOJ 2127 二元关系
题意: 思路: 先把所有的值加起来 最小割割哪儿 就代表那个地方不选 一减 剩下的就是 最大值了//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=105,M=10005,K=300050,inf=0x3f3f3f3f原创 2017-01-26 19:33:58 · 448 阅读 · 0 评论 -
BZOJ 1061费用流
思路: 我们可以列出几个不等式 用y0带进去变成等式 下-上 可以消好多东西我们发现 等式左边的加起来=0 可以把每个方程看成一个点正->负 连边 跑费用流即可//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#de原创 2017-03-04 20:59:43 · 334 阅读 · 0 评论 -
BZOJ 1001 平面图与对偶图的转化 最短路Or最大流
思路: 1.按照题意求最小割 转换成最大流用Dinic解 2. 转换成对偶图 求最短路 Dinic://By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 1100000int n,m,first[N],ne原创 2016-12-26 08:55:23 · 802 阅读 · 0 评论 -
BZOJ 1927 最小费用流问题
From lydrainbowcat//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 2222#define M 999999#define mem(x,k) memset(x,k,sizeof(x))i原创 2016-12-25 22:10:35 · 806 阅读 · 0 评论 -
网络流模板(模板题:POJ1273)
模板题:POJ1273#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m,jy,map[305][305],c[305][305],a[305],p[305];bool vis[305];int M(int e){ int f=0;原创 2016-04-28 20:32:13 · 863 阅读 · 0 评论 -
POJ 2391 Floyd+二分+拆点最大流
题意: 思路:先Floyd一遍两两点之间的最短路 二分答案 建图 跑Dinic只要不像我一样作死#define int long long 估计都没啥事……我T到死辣……..最后才改过来……(不过注意一哈 答案 &最短路确实是会爆int的)//By SiriusRen#include <cstdio>#include <cstring>#include <a原创 2016-10-28 23:51:11 · 633 阅读 · 0 评论 -
POJ 3189 二分+Dinic
题意: 思路: 二分跨度 枚举最低座次 建图:源点向每头牛连边权为1的边 每头牛向当前枚举的B的区间这段连上边权为1的边 所有座次向汇点连边权为牛棚容量的边 判判流量是不是等于n一开始写得是直接枚举答案,在这个答案下枚举座次最低的值 T了。。(然后我看了一发数据 ) 数据中有这样一个点:1000 20 balabala 答案是20这就很蛋疼了 我枚举了200原创 2016-10-23 17:36:47 · 202 阅读 · 0 评论 -
POJ 3281 网络流
题意: 思路: 网络流 重在建图…建完了图 就一切都好说了这道题 我的想法是 先把源点和所有的食品连上边 (容量为1)再把食品和对应的奶牛连上边 (容量为1)这个时候要拆点 因为每只奶牛只能才吃1种东西嘛就把奶牛拆成两个点两个点之间连上一条容量为1的边把奶牛分裂的第二个点 连到对应的饮料上 最后所有饮料向汇点连一条容量为1的边就好啦大功告成~~~//By SiriusRen原创 2016-10-10 23:02:28 · 232 阅读 · 0 评论 -
HDU 5889 Barricade (Dijkstra+Dinic)
思路: 首先 先Dijkstra一遍 找出来最短路 不是最短路上的边都不要 然后呢 套个Dinic模板就好了……求个最小割输出 大功告成~~//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 22原创 2016-10-05 21:04:10 · 274 阅读 · 0 评论 -
POJ 2455 二分+网络流
题意: 思路: 莫名其妙TLE啊woc我A了一坨题的网络流模板有问题 !!!! 在常数上会慢 (一个等于号 啊啊啊) 改了所有网络流有关的文章… 。。。。//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 90000原创 2016-10-29 17:53:11 · 622 阅读 · 0 评论 -
BZOJ 1305 二分+网络流
思路: 建图我根本没有想到啊…….(我是不会告诉你我借鉴了一下题解的思路)把每个人拆成喜欢的和不喜欢的点男 喜欢 向 男 不喜欢 连 边权为k的边如果男喜欢女 那么 男喜欢向 女喜欢 连 1如果男 不喜欢女 那么 男不喜欢 向 女不喜欢 连1男 喜欢 向 男不喜欢 连k女 不喜欢 向 女喜欢 连k源点 向 男喜欢 连 二分的那个值女喜欢 向汇点 连 二分的那个值最后判断一下 总流原创 2016-12-10 11:58:07 · 365 阅读 · 0 评论 -
网络流Dinic算法模板 POJ1273
这就是以后我的板子啦~~~#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 444int tot,next[N],first[N],w[N],v[N],n,m,ch[N];void add(int from,int to,int wei原创 2016-10-05 18:31:46 · 1295 阅读 · 0 评论 -
BZOJ 1066 Dinic
思路: 网络流 建边比较麻烦//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 100050int r,c,d,n=66666,tmp;char a[105][105],b[105][105];struc原创 2016-12-09 20:59:36 · 209 阅读 · 0 评论 -
TYVJ 1935 拆点网络流
思路: 就是一个多重匹配 把每个防御塔拆成 拆成第j次 发射的导弹 跑个网络流//By SiriusRen#include <cmath>#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 5555int n,m,t1,t2,v,原创 2016-12-22 17:08:31 · 877 阅读 · 0 评论 -
POJ 1966 求无向图点连通度
思路: n^2枚举(必须要n^2枚举啊)+拆点特此嘲讽网上诸多垃圾题解,你们许多都是错的 —yyh//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 5555int n,m,xx,yy,inf=0x3fff原创 2016-12-22 22:57:55 · 578 阅读 · 0 评论 -
POJ 3422 费用流
思路: 把每个方块拆成两个点 1个入点 1个出点 当前格子的入->出连费用-w[i][j] 容量1的边 当前格子的入->出连费用0 容量k-1的边 此格子的出向右&下(如果有的话)的格子的入连费用0容量k的边//By SiriusRen#include <queue>#include <cstdio>#include <cstring>using namespace std;#d原创 2017-01-03 17:52:46 · 324 阅读 · 0 评论 -
POJ 1895 分层图网络流+输出路径
题意: 题目描述:在公元3141年人类的足迹已经遍布银河系。为了穿越那巨大的距离,人类发明了一种名为超时空轨道的技术。超时空轨道是双向的,连接两个星系,穿越轨道需要一天的时间。然而这个轨道只能同时给一艘飞船使用,也就是说,每条轨道每天只能有一艘飞船穿越。现在IBM公司要把K(K≤50)台超级计算机从地球运到Eisiem星系去,由于这些超级计算机个头巨大,一台计算机就要用一艘飞船来运。现在人类能够到原创 2016-12-25 17:34:47 · 1165 阅读 · 0 评论 -
POJ 3680 最小费用最大流
思路: (from mhr)//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 444#define M 2222int first[N],next[M],v[M],edge[M],cost[M],s[原创 2016-12-25 17:38:31 · 650 阅读 · 0 评论 -
POJ 2135 最小费用最大流
思路: 源->1连费用0 流量2 其它的边 费用w 流量1 n->汇 费用0 流量2 最小费用流 搞定~//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 2010#define M 201000in原创 2016-12-25 17:41:45 · 383 阅读 · 0 评论 -
BZOJ 2929 网络流
题意是啥……. 思路: 不是与1或n连起来的边 边权是1 否则是inf 跑网络流//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=66666,inf=0x3f3f3f3f;queue<int>q原创 2017-03-04 21:03:01 · 337 阅读 · 0 评论