网络流
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU5294(最短路,最大流)
题意是给一个n点m边的无向图,求最少去掉多少边使得最短路不存在,和最短路存在的情况下最多去掉多少边。把所有最短路上的边搞进来,流量为1跑最大流,去掉多少边只要搞个DP就能找到最短路图上得最短的路,用m去减就行。因为n坑点是有重边。#include #include #include #include #include #include #include using n原创 2015-10-06 14:49:55 · 522 阅读 · 0 评论 -
BZOJ 3876 (流量有下界费用流)
题目链接:点击这里需要经过题目给出的边至少一次,也就是流量下界是1.另外有一类边:所有的点连向1,流量是无穷大费用是0. 对于有流量下界的点,就是经典的构造方法:对于#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <cmath>#include <algorithm>#inclu原创 2016-11-16 00:07:58 · 325 阅读 · 0 评论 -
codeforces 512C (最大流)
题目链接:点击这里题意:安排n个人在圆桌吃饭,每个人有一个值,任意相邻的两个人的值的和必须为质数,一张桌子至少坐3个人。然后求出任意的方案。每个数都大于2,要让相邻两个的和为质数,必须是一奇一偶。所以只需要每一个奇数左右两个偶数不相同就可以使得一张桌子至少3个人(3个人的桌子是不可能的,至少是4个人)。所以直接按照二分图建模,S到每一个奇数,流量为2,表示每个奇数相邻两个偶数;奇数到和他相加为质数的原创 2016-10-20 21:42:22 · 538 阅读 · 0 评论 -
codeforces 730I (费用流)
题目链接:点击这里题意:给出n个人每个人有一定的代码能力和运动能力,现在要求将n个人分成两堆,p个人写代码,q个人运动,最大化写代码人的代码能力总和和运动人的运动能力总和。很显然的费用流。源点到每个人流量为1,费用为0;每个人到p流量为1费用为代码值×-1;每个人到q流量为1费用为运动值×-1;p到汇点流量为p费用为0;q到汇点流量为q费用为0.这样跑一次最小费用最大流,费用负一下就是最大化的值。#原创 2016-10-25 20:16:39 · 641 阅读 · 0 评论 -
HDU 5520 (费用流)
题目链接:点击这里参考自这里 题意:给出一个网格图,要把奇数和偶数连起来,然后所有剩下的空格子连城若干个环(两个点可以重复走构成一个环)。已知每一对格子之间连边的花费,求最小费用。把每一个格子拆成入点和出点,然后这样建模: 1. S到奇数入点建边,流量为1费用为0; 2. 偶数出点到T建边,流量为1费用为0; 3. S到空点入点建边,空点出点到T建边,流量为1费用为0; 4. 每一原创 2016-10-11 18:19:32 · 733 阅读 · 0 评论 -
codeforces 546E (最大流)
题目链接:点击这里题意:第ii个点本身有aia_i个士兵,最后要使得第ii个点有bib_i个士兵。给出一个图,士兵只能在图上不超过一次边的范围内转移。问能不能达到目标状态。显然的网络流了。给每个点拆成出点和入点。S到所有的入点,流量是aia_i;所有的出点到T流量是bib_i;所有的入点到范围1以内的出点流量是INF;入点到出点流量是INF。开心的跑一次最大流判断是不是慢流即可。方案数在残留网络通过原创 2016-10-21 12:08:18 · 366 阅读 · 0 评论 -
UVALive 7264 (最小割)
题目链接:点击这里题意:给出n个技能,m个关系(学某个技能前必须先学会某一个技能)。可以直接通过氪金花费一定的钱学习一个技能(不需要考虑任何关系),可以花费一定的钱删掉某一种关系,以及正常学一个技能需要花费一定的钱。问学习目标技能最少花费多少。把每个点i拆成i个i+n: 1. S到i,流量为正常花费; 2. i到i+n,流量为氪金; 3. 每一个关系<u,v,w><u,v,w>,u+n到原创 2016-10-10 16:25:13 · 394 阅读 · 0 评论 -
HDU 5772 (最大权闭合图 最小割)
题目链接:点击这里题意: 给出一个序列, 问子序列的最大收益. 收益=价值-花费, 花费是子序列里面某个数字的个数的函数, 收益是任意两个下标对应的函数.题解建模: 首先将点分为3类第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分)第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费)第三类:对于10种字原创 2016-07-30 01:21:26 · 926 阅读 · 0 评论 -
UVALive 7037 (最大密度子图 网络流)
每个数都看成一个节点,每个逆序对之间的节点连边,于是只需要求出这个图的最大密度子图,可以用最小割模型解决.#include #include #include #include #include #include #include using namespace std;const double INF = 1e8;#define maxn 1511#define maxm原创 2016-03-22 16:15:05 · 780 阅读 · 0 评论 -
POJ 2987 (最大权闭合图 最小割)
FiringTime Limit: 5000MS Memory Limit: 131072KTotal Submissions: 9493 Accepted: 2850DescriptionYou’ve finally got mad at “the world’s most stupid” employees of原创 2016-03-21 22:13:16 · 415 阅读 · 0 评论 -
codeforces 653D (二分 最大流)
D. Delivery Bearstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputNiwel is a little golden bear. As everyon原创 2016-03-21 20:34:04 · 632 阅读 · 0 评论 -
UVA 1515 (最小割)
额...感觉关键还是要看出是最小割,然后用割的思想去考虑怎么建图...然后慢一点的最大流方法会被卡掉#include #include #include #include #include #include #include using namespace std;const int INF = 1e8;#define maxn 3333#define maxm 411原创 2016-03-18 21:33:23 · 295 阅读 · 0 评论 -
UVA 1658 (费用流)
求两条不相交从1到n路径的长度和的最小值.每个点拆成入点出点,流量1费用为边权,拆成的两个点流量为1费用为0,除了源点和汇点流量为2.#include #include #include #include #include #include #include using namespace std;#define INF 11111111#define maxn 2111原创 2016-03-18 14:14:57 · 407 阅读 · 0 评论 -
UVA 11082 (最大流)
#include #include #include #include #include #include #include using namespace std;#define INF 11111111#define maxn 111#define maxm 4111int n, m;int s, t;struct Edge{ int from, to,原创 2016-03-18 12:06:11 · 295 阅读 · 0 评论 -
UVA 753 (最大流)
构图很直接.坑:样例之间的空行,转换器之间的对接,转换器有无限多个所以和转换器有关的容量都是无穷.#include #include #include #include #include #include #include using namespace std;#define INF 11111111#define maxn 311#define maxm 21111原创 2016-03-18 11:18:06 · 300 阅读 · 0 评论 -
ACdream 1211 (无源汇上下界网络流)
题目链接:点击这里题意:给出一个无源汇有上下界网络流,求出一种可行流。板子题,建立超级远点S,超级汇点T,对于每一条边<u,v,l,r><u,v,l,r>,u-T连边,流量为l;S-v连边,流量为l;u-v连边,流量为r-l。然后跑最大流输出即可。#include <cstdio>#include <iostream>#include <cstring>#include <queue>#in原创 2016-11-29 23:49:30 · 325 阅读 · 0 评论