随笔分类 - 网络流—最大流
摘要:首先考虑只满足第一个条件,二分答案,把过期时间加上mid之后的2n个时间离散,老鼠拆成每个时间的,第i个时间第j个老鼠为id[i][j],连接(s,i,p[i]),对于离散后时间(g[j 1]~g[j])在i奶酪的时间区间里的ij,连接(i,id,老鼠速度\ 时间段长),然后连(id,t,inf),
阅读全文
摘要:妙啊,很容易想到连(s,a1,an)(s,b1,bn)(a2,t,an)(b2,t,bn),这样,但是可能会发生a1流到b2或者b1流到a2这种不合法情况 考虑跑两次,第二次交换b1b2,如果两次都合法就是合法 证明是假设a1流到b2了x的流量,然后交换b1b2之后依然满足条件,那么一定可以有a1流
阅读全文
摘要:最大流生动形象的板子,注意数组开大点 cpp include include include include using namespace std; const int N=100,inf=1e9; int n=26,m,h[N],cnt=1,s=1,t=26,le[N],x; char s1[5
阅读全文
摘要:洛谷上能过的最大流bzoj上T了……但是贪心做法明明在洛谷上比最大流要慢啊……如果是最大流的话就是裸题了吧 说一下贪心,就按照防晒霜排序,然后对每一个防晒霜选一头可以使用的且r最小的牛 就,没了。 贪心
阅读全文
摘要:妙啊 首先暴力建图跑最大流非常简单,s向每个i连流量为p[i]的边,每个i向t连流量为s[i]的边,每个i向j连流量为c的边(i include using namespace std; const int N=10005; int n,c,p[N],s[N]; long long f[2][N],
阅读全文
摘要:~~我到底怎么建的图为啥要开这么大的数组啊?!~~ 神题神题,本来以为图论出不出什么花来了。 首先要理解‘团’的概念,简单来说就是无向图的一个完全子图,相关概念详见度娘。 所以关于团一般都是NP问题,只有二分图例外。而题目中有这样一句话“n座城市可以恰好被划分为不超过两个城市群”,并且给出的是没有的
阅读全文
摘要:pre:http://www.cnblogs.com/lokiii/p/8435499.html 和最长k可重区间集问题差不多,也就是价值的计算方法不一样,但是注意这里可能会有x0==x1的情况也就是l==r的情况,然后就TTTTTLE。 其实处理方法很粗暴,因为是开线段,所以可以把它扩大一倍,然后
阅读全文
摘要:首先能显然的想到一个方法:(s,a1,an)(a2,t,an)(s,b1,bn)(b2,t,bn)然后图中的边正常连,危桥流量1,正常桥流量为inf。但是这样即使满流了也会有一些问题,就是流是从a1到b2的。解决方法是交换b1和b2,再跑一遍,这样以来如果再次满流,那么就意味着a1,a2,b1,b2
阅读全文
摘要:死于开小数组的WA?! 第一问n方dp瞎搞一下就成,f[i]记录以i结尾的最长不下降子序列。记答案为mx 第二问网络流,拆点限制流量,s向所有f[i]为1的点建(s,i,1),所有f[i]为mx(i+n,t,1),然后对于j include include include using namespa
阅读全文
摘要:s向所有单位连流量为人数的边,所有饭桌向t连流量为饭桌容量的边,每个单位向每个饭桌连容量为1的边表示这个饭桌只能坐这个单位的一个人。跑dinic如果小于总人数则无解,否则对于每个单位for与它相连、满流、另一端不是s的点则是最终方案 cpp include include include inclu
阅读全文
摘要:s向所有类别属性连流量为当前类别属性需要的个数的边,所有题目向t连流量为1的边(表示只能选一次),所有属性向含有它的题连容量为1的边。跑一变dinic,结果小于m则无解,否则看每一个类别属性连出去的题目的边是否满流,满流代表这个属性选择这道题 cpp include include include
阅读全文
摘要:判无解的方法非常粗暴:快T了还是没有合法方案,就是无解。 然后枚举答案,对于每一天都建一套太空站,s连地球,t连月球,上一天的太空站连向这一天的太空站,流量均为inf。然后对于每个飞船,上一天的停靠站向这一天的停靠站连边,流量为p。每次新增一天都新建一套,然后跑一次dinic加给tot,等tot =
阅读全文
摘要:因为是无向图,所以从1到2再到3等于从2到1和3。用拆点来限制流量(i,i+n,1),然后连接(s,2+n,1),(1,t,1),(3,t,1),对于原图中的边连接(x+n,y,1)(y+n,x,1),跑一遍dinic看答案是否为2即可。
阅读全文
摘要:~~在spoj上用题号找题就已经是手动二分了吧~~ 把1作为汇点,k个要入网的向t连流量为1的边,因为最小颜色数等于最大边流量,所以对于题目所给出的边(u,v),连接(u,v,c),二分一个流量c,根据最大流是否等于k来调整上下界。 cpp include include include inclu
阅读全文
摘要:不重叠最短路计数。 先弗洛伊德求一遍两两距离(其实spfa或者迪杰斯特拉会更快但是没必要~~懒得~~写),然后设dis为st最短距离,把满足a[s][u]+b[u][v]+a[v][t]==dis的边(u,v)连流量为1的边,表示只能走一次。注意这里a数组是弗洛伊德之后的,b是边的原长,然后跑一边最
阅读全文
摘要:记得把牛拆掉!拆成两个点i和i'在中间连一条流量为1的边,来限制每头牛只能选一组 一般来讲是一种物品一个消费者各占一边,但是这里有两个物品,所以考虑把牛放在中间,s向所有的食物连流量为1的边,所有食物向能吃它的牛i连流量为1的边,所有饮料向t连流量为1的边,牛i'向所有他能喝的连流量为1的边,然后跑
阅读全文
摘要:因为n很小所以从大到小枚举答案。(从小到大先排个序,因为显然胜利场次越多越容易成为strong king。然后对于每个枚举出来的ans建图。点分别表示人和比赛。s向所有人连接流量为胜利场次的边,所有比赛向t连流量为1的边来限制流量,然后对于“某一方一定要赢得比赛”,也就是当前被枚举为strong k
阅读全文

浙公网安备 33010602011771号