
网络流
stdwal
天演在化,功成在学。知海无涯,见花问道。
展开
-
POJ1273&&HDU1532-Drainage Ditches
最大流入门题,不用想就知道用Dinic算法。 0ms稳!#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;const int maxn = 200 + 10;const int INF = 10000000 + 10;struct edge { int to原创 2016-10-09 20:25:03 · 357 阅读 · 0 评论 -
POJ3469-Dual Core CPU
将问题分成S,T两个集合,转换为最小割进行解决。 在核A上执行的模块记为集合S,在核B上执行的模块集合为T,s为源点,t为汇点。在核A上执行所需费用是在顶点属于集合S时所产生的费用,因此将每个模块向t连边。相同的,源点s向集合T连边。 当两个模块在不同的核上运作的时候,只需在这两个模块之间连上一条双向边即可。 假如s和模块a之间的边是割,那么a在s上被处理,否则a在t上被处理,s能到达的点在t原创 2016-10-14 19:27:03 · 409 阅读 · 0 评论 -
POJ2135-Farm Tour
将该问题转换为求从1号顶点到n号顶点的两条没有公共边的路径,即求流量为2的最小费用流。#include <cstdio>#include <vector>#include <queue>#include <algorithm>using namespace std;const int maxv = 1000 + 10;const int INF = 350000000 + 10;typede原创 2016-10-14 19:56:27 · 325 阅读 · 0 评论 -
POJ2886-Who Gets the Most Candies?
先打表求反素数,这些反素数表示能够得到最多的糖果的回合数。 因此只要找出n以内最大的反素数,就表示在那个回合出局的人拿到最多的糖果,糖果数为该反素数的因子个数。 用线段树维护圈内的剩余人数和原来的位置,用类似约瑟夫环的方式求出每个人的相对位置,更新线段树,找出在那一个回合出局的人。 tree[1]表示剩下的人数。 当某个人手中的数字为负时,有可能会极小,因此要注意使余数为正。#include原创 2016-11-10 20:01:07 · 266 阅读 · 0 评论 -
POJ2987-Firing
利用Dinic求最小割,求最大权闭合图。 其中最大权=正权和-最小割,即最大裁员收益。 在求出最小割之后,遍历搜索残余网络的顶点个数即可求出裁员的个数。数据太大需要用long long。 计算残余网络的顶点个数时要去掉源点。#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algo原创 2016-10-30 20:23:02 · 324 阅读 · 0 评论 -
POJ2112-Optimal Milking
二分最大流答案,注意上界是INF而不是200.#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>using namespace std;const int maxk = 30 + 5;const int maxc = 200 + 5;const int maxv =原创 2016-10-31 22:33:22 · 358 阅读 · 0 评论 -
POJ3281-Dining
按照食物,牛,饮料并自定源点s和汇点t建图,用最大流求解。 图中牛的节点为2 * n个,这样能使每头牛最多一份食物一份饮料。#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <algorithm>using namespace std;const int maxn = 100 + 5;原创 2016-10-14 18:35:51 · 262 阅读 · 0 评论 -
POJ1274-The Perfect Stall
裸的二分图匹配问题。 两种做法,第一种是建图转换成最大流流的问题求解,另一种直接用二分图匹配模板。 最大流:#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>using namespace std;const int maxn = 400 + 5;const l原创 2016-10-30 21:38:01 · 249 阅读 · 0 评论