随笔分类 -  网络流—最大费用最大流

摘要:有一种限制下界强制选的,但是也可以不用 把每个格点拆成两个,一个连s一个连t,对于不是必选的连中间连流量1费用0边表示不选,然后黑白染色,黑点连横着白点连竖着,边权就是这条水管的权值,然后跑最大费用最大流 然后判断不可能就是不满流 并且这样可以满足每个被选的格子都在一个环上,因为他一定唯一对应另一个 阅读全文
posted @ 2019-06-14 11:00 lokiii 阅读(790) 评论(0) 推荐(0)
摘要:首先假设全睡觉,然后用费用流考虑平衡要求建立网络流 把1~n的点看作是i k+1~k这一段的和,连接(i,i+k,1,e[i] s[i]),表示把i改成吃饭,能对i~i+k 1这一段的点产生影响;然后连接(i,i+1,k ms me,0),这是除了限额外可以随便选的(i+k,i+1 n就连到t) 然 阅读全文
posted @ 2019-06-08 18:23 lokiii 阅读(469) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-10-12 17:37 lokiii 阅读(3) 评论(0) 推荐(0)
摘要:费用流里spfa最后的判断要写成dis[t] =0而不是dis[t]!= inf否则会WAWAWA…… 阅读全文
posted @ 2018-09-22 16:09 lokiii 阅读(300) 评论(0) 推荐(0)
摘要:今天脑子不太清醒,把数据范围看小了一直TTTTLE…… 最大费用最大流,每个格子拆成两个(x,y),(x,y)',(x,y)向(x,y)'连一条费用a[x][y]流量1的边表示选的一次,再连一条费用0流量inf的表示取走之后再从这里走,然后每个(x,y)'向(x,y+1),(x+1,y)连一条费用0 阅读全文
posted @ 2018-09-14 14:59 lokiii 阅读(192) 评论(0) 推荐(0)
摘要:……因为T点忘记还要+n所以选小了所以WA了一次 注意!题目中所给的时间是一边闭一边开的区间,所以读进来之后先l++(或者r 也行) 线段树优化建图,很神。(我记得还有个主席树优化建树的?)首先考虑暴力建图:s向每个强盗i连(s,i,1,c[i]),每个时间j向t连(j,t,1,0),每个强盗向所有 阅读全文
posted @ 2018-02-11 18:59 lokiii 阅读(178) 评论(0) 推荐(0)
摘要:s向仓库i连ins(s,i,a[i],0),商店向t连ins(i+m,t,b[i],0),商店和仓库之间连ins(i,j+m,inf,c[i][j])。建两次图分别跑最小费用最大流和最大费用最大流即可。 cpp include include include include using namesp 阅读全文
posted @ 2018-02-11 13:43 lokiii 阅读(163) 评论(0) 推荐(0)
摘要:其实KM更快……但是这道题不卡,所以用了简单粗暴的费用流,建图非常简单,s向所有人连流量为1费用为0的边来限制流量,所有工作向t连流量为1费用为0的边,然后对应的人和工作连(i,j,1,cij),跑一遍最小费用最大流再跑一遍最大费用最大流即可。方便起见直接重建图了。 cpp include incl 阅读全文
posted @ 2018-02-11 13:26 lokiii 阅读(362) 评论(0) 推荐(0)
摘要:第一问:因为每个点只能经过一次,所以拆点限制流量,建(i,i',1,val[i]),然后s向第一行建(s,i,1,0),表示每个点只能出发一次,然后最后一行连向汇点(i',t,1,0),跑最大费用最大流 第二问:没有点经过次数的限制所以不用拆点,s向第一行建(s,i,1,0),然后最后一行连向汇点( 阅读全文
posted @ 2018-02-11 13:10 lokiii 阅读(183) 评论(0) 推荐(0)
摘要:和火星那个有点像,但是这个价值直接在路径上,不用拆点,对于每条价值为w的边(i,j),连接(i,j,1,w)(i,j,inf,0),表示价值只能取一次,然后连接源点和所有出发点(s,i,k,0),所有终点和t(i,t,r,0),然后跑最大费用最大流即可。 cpp include include in 阅读全文
posted @ 2018-02-11 07:41 lokiii 阅读(135) 评论(0) 推荐(0)
摘要:同 poj 3680 https:www.cnblogs.com/lokiii/p/8413139.html cpp include include include include include using namespace std; const int N=1000005,inf=1e9; i 阅读全文
posted @ 2018-02-09 14:59 lokiii 阅读(137) 评论(0) 推荐(0)
摘要:输出方案好麻烦啊 拆点,石头的连(i,i',1,1)(i,i',inf,0)表示可以取一次价值1,空地直接连(i,i',inf,0),对于能走到的两个格子(不包括障碍),连接(i',j,inf,0),然后连接s和起点,终点和t,流量为探测车的数量。然后跑最大费用最大流。 关于输出方案,dfs即可,每 阅读全文
posted @ 2018-02-08 15:03 lokiii 阅读(188) 评论(0) 推荐(0)
摘要:记得cnt=1!!因为是无向图所以可以把回来的路看成另一条向东的路。字符串用map处理即可。拆点限制流量,除了1和n是(i,i+n,2)表示可以经过两次,其他点都拆成(i,i+n,1),费用设为1,原图中的边(i,j)连接(i+n,j,1),注意特判掉i==q&&j==nst直接相连的情况,流量要设 阅读全文
posted @ 2018-02-07 21:43 lokiii 阅读(206) 评论(0) 推荐(0)