网络流
文章平均质量分 79
doveccl
这个作者很懒,什么都没留下…
展开
-
[USACO 4.2.1] Drainage Ditches
题目在这里:http://wikioi.com/problem/1993/关于sap,终于找到了一个可行的模版,而且速度还可以,关键就是怕递归爆栈(可能性很小吧)变量名有点长,那是方便理解,另外网络的储存用的是边式储存(因为我发现了邻接矩阵的BUG)好了,网络流就是那样的东西,有些地方还真的就不好说清楚,自己慢慢悟吧……#include #include #includ原创 2014-01-21 13:29:16 · 1057 阅读 · 0 评论 -
[HNOI 2013] 切糕
题目描述 Description经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B。出于美观考虑,小 A 希望切面能尽量光滑且和谐。于是她找到你,希望你能帮她找出最好的切割方案。 出于简便考虑,我们将切糕视作一个长 P、宽 Q、高 R 的长方体点阵。我们将位于第 z层中第 x 行、第 y 列上(1≤x≤P, 1≤y≤Q, 1≤z≤R原创 2014-03-13 13:56:58 · 1014 阅读 · 0 评论 -
[网络流24题 #16]数字梯形问题
这是一道很经典的费用流题目,可以通过最大费用最大流实现通过分析题目,我们很容易想到建模方法:1、对于规则一,题目规定每一个节点只能访问一次,也就是说,实际上这个时候每一个点都有容量限制,所以我们必须把点i拆分成两个点Xi,Yi。此时每一条边的容量都是1,费用为改点的权值,此时只允许使用该节点一次,并且代价为权值。数字梯形是逐层向下的,并且每一个点可以向下面两个方向进行扩展,于是我们在这原创 2014-01-28 10:36:25 · 1096 阅读 · 0 评论 -
最小费用最大流模板
没什么好说的,直接上代码吧~#include #include #include #include #define InsE(x,y,c,b,P) cost[P]=b,cap[P]=c,v[P]=y,next[P]=head[x],head[x]=P++#define add(x) Q.push(x),vis[x]=1#define del(x) x=Q.front(),Q.pop()原创 2014-01-21 13:31:37 · 711 阅读 · 0 评论 -
[网络流24题 #11]航空路线问题
【问题分析】求最长两条不相交路径,用最大费用最大流解决。【建模方法】把第i个城市拆分成两个顶点,。1、对于每个城市i,连接(,)一条容量为1,费用为1的有向边,特殊地(,)和(,)容量设为2。2、如果城市i,j(j>i)之间有航线,从到连接一条容量为1,费用为0的有向边。求源到汇的最大费用最大流。如果(,)不是满流,那么无解。否则存在解,即为最大费用最大原创 2014-01-26 14:09:14 · 1396 阅读 · 0 评论 -
[网络流24题 #6]最长递增子序列问题
这一道题貌似在网上找不到比较可靠的数据,所以如果想评测,尽量还是手动模拟验算,这里也不贴代码了。说一下ByVoid大神的建图过程:【问题分析】第一问是LIS,动态规划求解,第二问和第三问用网络最大流解决。【建模方法】首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K。1、把序列每位i拆成两个点和,从到连接一条容量为1的有向边原创 2014-01-24 13:34:36 · 817 阅读 · 0 评论 -
[网络流24题 #7]试题库问题
同样没有特判程序,所以只谈思路:【问题分析】二分图多重匹配问题,用最大流解决。【建模方法】建立二分图,每个类别为X集合中的顶点,每个题为Y集合中的顶点,增设附加源S和汇T。1、从S向每个Xi连接一条容量为该类别所需数量的有向边。2、从每个Yi向T连接一条容量为1的有向边。3、如果一个题i属于一个类别j,连接一条从Xj到Yi容量为1的有向边。原创 2014-01-24 14:03:51 · 1257 阅读 · 0 评论 -
[网络流24题 #5]圆桌问题
又是一道多解的题【问题分析】二分图多重匹配问题,可以用最大流解决。【建模方法】建立二分图,每个单位为X集合中的顶点,每个餐桌为Y集合中的顶点,增设附加源S和汇T。1、从S向每个Xi顶点连接一条容量为该单位人数的有向边。2、从每个Yi顶点向T连接一条容量为该餐桌容量的有向边。3、X集合中每个顶点向Y集合中每个顶点连接一条容量为1的有向边。求网络最大原创 2014-01-23 13:33:44 · 659 阅读 · 0 评论 -
[网络流24题 #3]最小路径覆盖问题
【问题分析】有向无环图最小路径覆盖,可以转化成二分图最大匹配问题,从而用最大流解决。【建模方法】构造二分图,把原图每个顶点i拆分成二分图X,Y集合中的两个顶点Xi和Yi。对于原图中存在的每条边(i,j),在二分图中连接边(Xi,Yj)。然后把二分图最大匹配模型转化为网络流模型,求网络最大流。最小路径覆盖的条数,就是原图顶点数,减去二分图最大匹配数。沿着匹配边查找,就是一个路径上的点原创 2014-01-23 13:24:24 · 789 阅读 · 0 评论 -
[网络流24题 #4]魔术球问题
本来是应该用最大流做的的但是实际上还有一种方法可以得到答案:现在如果有n个柱子,要放数i,从第一个柱子开始试,试到能放的那个柱子,就把i放进去,如果n个柱子都不行,就停止计算,得到最大值。这其实是一个贪心的证明,事实证明最大流与贪心的答案是吻合的。同样这是一个方案数多样化的题目,鉴于没有Special Judge,所以过不了也是正常,不过不用管它。这道题的标准做法应该是最小路径覆盖原创 2014-01-21 13:47:19 · 960 阅读 · 0 评论 -
[网络流24题 #18]分配问题
这个题目写到了手残的境界,十分感动,不必多说。首先是加反向边时下标没有反过来,然后是基于费用的最短(最长)路每次写成基于弧的容量……最后就是临时数组开小了,导致开始评测只有11分,搞得我真是很无语。看了wjk大神在很久很久以前的代码,发现他的增广是递归式的(在这一点上我比他有优势,非递归)最后发现wjk大神代码没有用临时数组,着实把我震撼了,后来才发现他原来用正向边原创 2014-01-21 13:40:13 · 890 阅读 · 0 评论 -
[wikioi 1022]覆盖
在这里首先感谢wjk大神对于我的帮助,没有他,我还很难想出建立二分图的模型。我按照我的个人想法,用最大流写了此题,但是情况不尽人意:相当牛叉的时间(看最后一个点),惨象已不必多说……所以,被逼无奈,找到了传说中的匈牙利算法(wjk大神曾称之为“增广路算法”,让我错以为和网络流有关,实际上不是的)匈牙利算法是可以用来解决二分图匹配问题的,而且效率比最大流高很多……原创 2014-01-21 13:35:07 · 771 阅读 · 0 评论 -
[网络流24题 #2]太空飞行计划问题
这道题写了好久啊!先说一下建图过程吧:把每个仪器看作X顶点,把实验看作Y顶点,增加S和T点。S点连接所有的X顶点,权值为每个仪器的费用,T点连接所有实验,权值是收入。如果实验需要相应的仪器,则把对应的X,Y顶点相连,权值为无穷大,那么最大收入则为所有实验的收入减去最小割,根据最小割最大流定理,最小割就是最大流。对应的解就是最小割划分出的T集合中的点,也就是最后一次寻找增广路原创 2014-01-21 13:45:37 · 693 阅读 · 0 评论 -
[网络流24题 #17]运输问题
本来和job一样是一道水题,没有想到错误会出在循环的起始值上,这说明写代码时的智商还是有点低,应该多加训练,就是这样O__O"…#include #include #include #include #include #define clean(x,y) memset(x,y,sizeof(x))#define add(x) Q.push(x),v[x]=1#define del(x原创 2014-01-21 13:42:04 · 734 阅读 · 0 评论 -
[网络流24题 #1]飞行员配对方案问题
如果没有特判程序,就不需要提交去评测了,题目答案多样化,无法得知out文件的答案是用何种搜索顺序制定的,只需比较最大流值是否算对即可。#include #include #include #include #include #define MaxN 110using namespace std;const int INF=~0U>>2;int head[MaxN],v[MaxN原创 2014-01-21 13:44:07 · 670 阅读 · 0 评论 -
PIGS
输尼克在一家养猪场工作,这家养猪场共有M间锁起来的猪舍,由于猪舍的钥匙都给了客户,所以尼克没有办法打开这些猪舍,客户们从早上开始一个接一个来购买生猪,他们到达后首先用手中的钥匙打开他所能打开的全部猪舍,然后从中选取他要买的生猪,尼克可以在此期间将打开的猪舍中的猪调整到其它开着的猪舍中,每个猪舍能存放的猪的数量是没有任何限制的。买完猪后客户会将他打开的猪舍关上。好在尼克事先知道每位客户手原创 2014-04-16 19:29:03 · 1068 阅读 · 1 评论