
网络流
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[CEOI2008] BZOJ 1391 order-最小割
题目链接:右转进入题目题目大意:请自行参考原题。解:SB最小割竟然还卡常卡内存QwQ第一遍MLE,第二遍TLE我也真是醉了。从s向机器连边,容量为购买价格从机器向任务连边,容量为租用价格从任务向t连边,容量为收益。统计出收益之和tot,跑一边网络流flow,tot-flow就是答案。这个题不需要开long long。代码:#include#include原创 2017-05-11 10:37:01 · 474 阅读 · 0 评论 -
[CQOI2015]网络吞吐量 - 最短路 - 网络流
传送门题解:如题求出最短路网拆点跑网络流即可。#include#include#include#include#include#include#include#define INF (LLONG_MAX/3)#define MAXN 1010#define MAXM 200010#defin原创 2017-06-26 19:08:52 · 1048 阅读 · 0 评论 -
[学习笔记]费用流 - 餐巾计划
屯板子,以餐巾计划问题为例。 根据上下界网络流的一般做法,可以得知这里如果minf=0那么就是一般的网络流的边。 否则#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<climits>#include<queue>#define N 4020#define M 15*N#d原创 2017-12-26 15:19:07 · 298 阅读 · 0 评论 -
bzoj 2163 复杂的大门 - 网络流
题目大意:有一张完全图,其中m条有向边边边权是0,可以走wiwiw_i次,其余的边的边权是1,可以走任意次;现在要遍历每个点恰好FiFiF_i次,问最小代价+1。 题解:考虑转化为上下界二分图最小费用最大流问题,其实就是要走0边尽量多次,因此可以不加入1的边跑一遍最大流,那么最大流(也就是F的和)减去这个求出来的最大流就是走1的次数。 代码:#include<iostream&g...原创 2018-06-01 19:10:26 · 286 阅读 · 0 评论 -
ARC 080 F Prime Flip - 网络流
首先长度为1的区间可以三次翻转,3+5-7。 长度为2的区间可以二次翻转,5-3。 长度为奇质数的区间可以一次翻转。 长度为4的区间可以二次翻转,7-3。 长度>=6并且是偶数的区间可以根据歌德巴赫猜想拆成两个奇质数的和。 长度>=9并且是奇合数的区间可以根据原歌德巴赫猜想拆成三个奇质数的和。 综上可以归纳: 1,长度是奇质数的区间可以一次翻转; 2,长度是偶数的区间可...原创 2018-08-14 15:28:57 · 307 阅读 · 0 评论 -
ARC 076 F Exhausted? - 网络流 - 霍尔定理 - 线段树
首先可以前缀和优化网络流建图并得到TLE的好成绩。 可以直接用霍尔定理(准确的说是其推广)转化,但是突然忘了Hull定理是啥了。 网上很多贪心都是错的,最经典的例如按照左端点排序相同就看右端点的做法可以被n=m=4, (1,3), (2,4), (2,5), (0,4)卡掉。 然后还是回来考虑网络流,开始思考这个特殊的网络流有什么转化方式可以直接做,人脑了1h后弃疗。 紧接着突然意识到最大...原创 2018-08-17 14:02:01 · 377 阅读 · 0 评论 -
矩阵 - 最小割
题目大意:有一个N*M的网格,在每个格子填入1~9中的某一个。有若干限制形如某相邻的两个数字和不能超过x,最大化每个格子的数值之和。 题解: 直接做不好维护;考虑切糕,a+b<=x等价于a<=x-b即(10-x)+a<=(10-b)也就是x’+a<=b’。这个黑白染色之后黑格子的链翻转就可以了,注意只能从a连向b’来限制。最后求的是最大,每个位置都用10减去,最后再算回...原创 2018-09-06 16:15:22 · 235 阅读 · 0 评论 -
task - 最小割
题目大意:有一个k元组的可重集合S,|S|=n,定义两个k元组的加法是每一元分别相加得到都k元组。求S的一个子集,使得这些k元组加起来的字典序最大。有m条限制形如如果想选x就必须选y。n≤1000,m≤5000,k≤5n\le1000,m\le5000,k\le5n≤1000,m≤5000,k≤5题解:场上依次写了n≤20,m=0n\le20,m=0n≤20,m=0,限制是链和一棵树的情...原创 2018-09-25 16:39:48 · 220 阅读 · 0 评论 -
「学习笔记」网络战争 - KD-Tree - 最小割树 - 学习笔记
题目大意就是让你实现一个KDT和最小割树(大雾)然后发现两个都不会,就赶紧去学习了一发姿势。顺带练习了一发namespace都的使用姿势。KDT本质上就是个做剪枝的过程,很好理解。最小割树是这样的,每次随便选择一个S和T,然后求出最小割w,然后在最小割树上连(S,T,w)即可。然后一对点的最小割是路径上都的最小值。(这垃圾题写了将进7个k也真爽翻了的说#include&lt;iostr...原创 2018-09-22 17:13:07 · 348 阅读 · 0 评论 -
msc的棋盘 - 网络流 - 最小割 - dp
题目大意:有一张网格图,每个位置有至多1个棋子。告诉你每一列有多少棋子{bm}\{b_m\}{bm},问有多少行的情况{an}\{a_n\}{an}(即每一行有多少棋子),使得存在一种情况,满足这两个限制。例如当n=4,m=2,b1=1,b2=3n=4,m=2,b_1=1,b_2=3n=4,m=2,b1=1,b2=3的时候,{1,1,1,1},{0,1,1,2}\{1,1,1,1\},...原创 2018-10-16 18:06:31 · 388 阅读 · 0 评论 -
[学习笔记] 上下界网络流学习笔记
带下界的流建图如下:对于&lt;u,v,down,up&gt;,新建超级源点S’和超级汇点T’,连&lt;S’,v,down&gt;,&lt;u,T’,down&gt;,&lt;u,v,up-down&gt;无源汇可行流:直接判是否满流即可。有源汇最小流:连&lt;T,S,INF&gt;,然后跑完F(S’,T’)的网络跑F(S,T)就是答案原创 2018-10-30 21:39:25 · 219 阅读 · 0 评论 -
bzoj 2502 清理雪道 - 带下界最小流
如学习笔记所讲。#include<bits/stdc++.h>#define gc getchar()#define rep(i,a,b) for(int i=a;i<=b;i++)#define Rep(i,v) rep(i,0,(int)v.size()-1)#define lint long long#define db double#define pb pu...原创 2018-10-30 21:41:03 · 197 阅读 · 0 评论 -
不同的缩写 - 搜索 - 网络流
题目大意:给你n个字符串,你要对每个字符串求一个子序列,使得这些子序列非空并且两两不同,并且最长的子序列长度最短。n,∣s∣≤300n,|s|\le300n,∣s∣≤300题解:显然二分答案x。通过精确的搜索可以对每个串找出长度不超过x的n个不同的子序列(显然如果一个串有至少n个本质不同的子序列那么其一定可以放到最后选),然后连边跑二分图匹配即可。#include<bits/stdc++...原创 2019-03-13 16:39:26 · 450 阅读 · 0 评论 -
Blue Mary的旅行2 - 网络流
题目大意和Blue Mary的旅行差不多,只是要求同时出发,且行进过程中不允许停留。问是否可行以及最小的最大时间;解:借鉴Blue Mary的旅行这道题的思路可以考虑检出分层图,然后第i层的u和第i+1层的v(u!=v)连边当且仅当原图中有u和v的连边。同层之间不连边。枚举答案跑最大流,流量>=人数时输出。由于是DAG所以答案最大是N-1如果层数大于这个流量还到不了人数说明无法满足此时原创 2017-06-18 21:29:32 · 811 阅读 · 0 评论 -
[ZJOI2009]BZOJ1433 假期的宿舍
传送门题解:SB二分图匹配,我会说我提交了五六次么QwQ注意清零和i和i+n(人和本人的床)连边。。#include#include#include#include#include#include#define MAXN 110#define MAXM 20000#define INF INT_MAX#define build_edge(u,v,c) add_原创 2017-05-21 16:38:16 · 438 阅读 · 0 评论 -
BZOJ2132 圈地计划-最小割
题目链接:右转进入题目题目大意:自行参考原题解:非常简单,限制有:不能同时有A和B,相邻的点同时A(或B)不能相连所以显然要黑白染色(就是把相邻的点染成不同的两种颜色,这样检出两派点来)左面的点x建(s,x,a),(x,t,b)右边的点y建(s,y,b),(y,t,a)相邻的点x,y建(x,y,c).(y,x,c)。每加一条边就ans+=此边边权最后ans-=最原创 2017-05-11 15:19:22 · 479 阅读 · 0 评论 -
BZOJ3275 Number-最小割
题目链接:右转进入题目这个题有一部非常好的转化。首先一眼看出这是一个带权最大独立团的问题。所以想到网络流但是网络流里面学的带权最大独立团问题必须要求是二分图啊怎么办!我承认我没有想到怎么二分QwQ真是太弱辣!发现两个奇数不满足a^2+b^2=c^2的条件(需要一点数学知识),两个偶数不满足gcd(a,b)=1的条件。所以分别把奇数和偶数看作两排点即可。如果两个不能同原创 2017-05-11 16:11:36 · 495 阅读 · 0 评论 -
BZOJ3158 千钧一发-最小割
题目链接:右转进入题目和[Number]这道题几乎一模一样。不多解释代码就是随便改了改//BZOJ3275 #include#include#include#include#include#include#define INF INT_MAX#define MAXN 1010#define MAXM 3000000#define ull long longus原创 2017-05-11 16:22:31 · 424 阅读 · 0 评论 -
[NOI2006]最大获利 BZOJ1497 - 最小割
题目链接:右转进入题目可能我不适合做NOI的题迄今为止做NOI的题有一半都是MLE 23333M的范围看小了,不停地RE建边:(S,中转站,p),(中转站A&B,用户群,inf),(用户群,T,C)跑一边最小割。所有用户群的获利之和减去最小割的值就是答案。代码:#include#include#include#include#include#defin原创 2017-05-11 16:59:58 · 363 阅读 · 0 评论 -
BZOJ3511 土地划分-最小割
各种retle也真是不想说什么了这种类型的最小割模板题大全集题目链接:右转进入题目题目大意:请自行参考原题解:对第i个城市建点C=i,对第i条边两端点X和Y建点A=i+n和B=i+n+m,建源点S=0,汇点T=n+2*m+1。建边:(S,C,VA),(C,T,VB),(S,A,EA),(B,T,EB),(A,X,INF),(A,Y,INF),(X,B,INF),(Y,B,I原创 2017-05-12 14:15:53 · 785 阅读 · 0 评论 -
BZOJ3894文理分科-最小割
题目链接:右转进入题目题目大意:自行参考题解:和上一个“土地划分”一样。代码://BZOJ 3511 #include#include#include#include#include#include#define MAXN 60000#define MAXM 1000000#define INF INT_MAX#define build_edge(u,v,c) a原创 2017-05-12 14:48:54 · 380 阅读 · 0 评论 -
BZOJ1585 Earthquake Damage 2 地震伤害 - 最小割
题目链接:传送门题目大意:自行参考原题我承认这个题如果不告诉我是最小割我是想不到的QwQ这个题如果知道了是最小割就非常显然了:S=1,T=2n+1,对每个点x拆成x和x2=x+n,对于图上的每一条边(u,v),建边(u2,v,INF),(v2,u,INF)。对于报告的点u,建边(u,u2,INF),(u2,T,INF)。对于其它不是1的点u,建边(u,u2,1)对于原创 2017-05-12 15:33:09 · 557 阅读 · 0 评论 -
BZOJ3438 小M的作物-最小割
题目链接:右转进入题目题目大意:自行参考题解:同土地划分//BZOJ 3834 #include#include#include#include#include#include#define MAXN 100000#define MAXM 5000000#define INF INT_MAX#define build_edge(u,v,c) add_edge(u,原创 2017-05-12 15:04:10 · 1364 阅读 · 0 评论 -
BZOJ2039 人员雇佣-最小割
题目链接:传送门题目大意:自行参考解:这么SB题读错意思了,然后不停的输出0……QwQ建边(S,x,Ax),(x,y,Exy)(y,x,Exy),(x,T,sigma(Exi))。ans=sigma(sigma(Eij))-最小割代码://BZOJ 2039#include#include#include#include#include#include#d原创 2017-05-13 09:20:45 · 432 阅读 · 0 评论 -
[JLOI2768]冠军调查 BZOJ2768-最小割
传送门题目和之前SHOI2007的善意的投票一模一样,源代码提交上去就能AC代码://BZOJ1934 SHOI2007//BZOJ2768 JLOI2010#include#include#include#include#include#include#define MAXN 1000#define MAXM 200000#define INF INT_MAX#de原创 2017-05-15 20:01:14 · 459 阅读 · 0 评论 -
[SHOI2007]BZOJ1934 Vote善意的投票-最小割
题目链接:传送门题目大意:请自行参考原题题解:我承认如果不告诉我这是个最小割我是想不到的QWQ一个同学i的意见是x如果x=1就建边(S,i,1)否则建边(i,T,1)。如果xy是朋友就建边(x,y,INF)&(y,x,INF)。最小割就是答案(割掉某一边表示违背初始意愿)代码://BZOJ1934//SHOI2007 #include#include#include原创 2017-05-12 15:12:36 · 481 阅读 · 0 评论 -
BZOJ1458 士兵占领-最大流
传送门题目大意:自行参考题解:首先一看方格图最值问题就是网络流(尽管我是知道了网络流才做的QwQ)肯定是对每一行建一排点,每一列建一排点,建成一个二分图。显然行和列连边容量为1.首先注意到要求最小值,发现最小割没办法处理(因为从s对每一行的连边割去是没有意义的,因为可能只“割去”一部分)然后注意到,如果s和每一行连边的容量表示“最多/最少能放多少个士兵的时候”,这就是个有上原创 2017-05-17 19:11:11 · 407 阅读 · 0 评论 -
codechef Annual Parade - 费用流 - 二分
题目大意:总之就是要做最小路径覆盖,路径只要不是长度大于1的环就要额外支付C的代价。多次给出C求答案。n≤250,m≤30000,q≤104n\le250,m\le30000,q\le10^4n≤250,m≤30000,q≤104题解:考虑固定c怎么做。考虑无向图最小路径覆盖的过程,每次要么是合并两条路径,可以少支付一个C,要么形成一个环,也可以少支付一个C。因此就是最小路径覆盖每次增广收益是c...原创 2019-05-02 20:54:34 · 710 阅读 · 0 评论