博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

随笔分类 -  网络流

摘要:"题目链接" 首先黑白棋子的交换等价于黑棋子在白格子图上移动,都到达指定位置。 ~~在这假设我们知道这题用网络流做。~~ 那么黑棋到指定位置就是一条路径,考虑怎么用流模拟出这条路径。 我们发现除了路径的起点和终点的格子消耗次数为1,路径上其它点的格子交换次数为$2$。 可以想到把每个点拆成$in$和 阅读全文
posted @ 2018-09-05 21:57 SovietPower 阅读(151) 评论(0) 推荐(0)
摘要:"题目链接" Update: 我好像刚知道多路增广就是zkw费用流。。 cpp //1314ms 2.66MB 本题优化明显 include include include include include // define gc() getchar() define MAXIN 350000 de 阅读全文
posted @ 2018-09-05 08:19 SovietPower 阅读(368) 评论(0) 推荐(0)
摘要:"题目链接" "LOJ" "洛谷" ~~容易想到~~最小费用最大流分配度数。 因为水管形态固定,每个点还是要拆成4个点,分别当前格子表示向上右下左方向。 然后能比较容易地得到每种状态向其它状态转移的费用(比如原向上的可以流到向下)。 注意比如向左向上的L,左连右,上连下,没有上连右(日常zz)。 " 阅读全文
posted @ 2018-09-04 23:10 SovietPower 阅读(240) 评论(0) 推荐(0)
摘要:见上题 阅读全文
posted @ 2018-07-25 09:43 SovietPower 阅读(330) 评论(0) 推荐(0)
摘要:题目链接 线性规划 用$A_=0/1$表示第$i$天$j$类志愿者能否被招募,$x_i$为$i$类志愿者招募了多少人,$need_i$表示第$i$天需要多少人,$C_i$表示$i$类招募志愿者的花费。 那么我们需要 \(最小化\ Cx\\s.t.\ Ax\geq need\\x\geq 0\) (s 阅读全文
posted @ 2018-07-24 21:51 SovietPower 阅读(406) 评论(0) 推荐(0)
摘要:"题目链接" 为什么这题网络流这么快, "海拔" 那题就那么慢。。 cpp //119968kb 544ms //路不是有向的,所以要建四条边。。既然如此就直接将反向边的流量设为w了。(or MLE...) include include include // define gc() getchar 阅读全文
posted @ 2018-04-08 21:31 SovietPower 阅读(189) 评论(0) 推荐(0)
摘要:"题目链接" 题目是求最长反链,反链指点集内任意两点不能互相到达。 根据Dilworth定理,在DAG中,$$最长反链 = 最小路径覆盖 = V 最大匹配数$$ 用Floyd求一遍传递闭包后,在所有可互相到达的点间连边。求二分图最大匹配。 也可以这么理解: 每一条边表示这两个点不能同时被选中,选出最 阅读全文
posted @ 2018-04-04 10:13 SovietPower 阅读(232) 评论(0) 推荐(0)
摘要:"题目链接" 没有$D$的限制怎么做?"最小"我们可以想到最小割,把同一纵轴上的点串起来,分别连到S,T,最小割就是答案。(在这把点权放到前一条边上) 有限制,即如果要割点$i$,对于相邻纵轴只能去割$[i D,i+D]$。 用INF边限制住这个区间,即由$i$向$i D$连,由$i+D$向$i$连 阅读全文
posted @ 2018-04-02 20:29 SovietPower 阅读(154) 评论(0) 推荐(0)
摘要:"BZOJ" "洛谷" $Solution$ 很显然的建二分图后跑最大费用流,但有个问题是一个数是只能用一次的,这样二分图两部分都有这个数。 那么就用两倍的。如果$i$可以向$j'$连边,$j$也向$i'$连边,如果上一次走了$i j'$,那么这一次一定走$j i'$。 每次跑最大费用流,直至有一次 阅读全文
posted @ 2018-04-01 14:19 SovietPower 阅读(241) 评论(0) 推荐(0)
摘要:"题目链接" 一条边不变其它边减少可以看做一条边增加其它边不变。 假设要加的边lab为(A B,v),那么肯定是要使除这条边外,A B的每条路径上的最小权值都$ v$,这样在连通A,B时(即Kruskal中Union())才一定会选择这条边。 要求路径上最小边的权值$ v$,即要求在路径上有任意一边 阅读全文
posted @ 2018-03-30 09:57 SovietPower 阅读(191) 评论(0) 推荐(0)
摘要:[TOC] 2018.3.27 Test 时间:7:30~11:50 期望得分:(50+)+0+20=70 实际得分:52+5+20=77 总结 T1 看错一点题,暴力也废了很长时间。 T2 期望DP没写过不敢写,然而50分和期望没有关系,贪心什么的就行。没细看。 T3 建图死活建不出来,没想明白费 阅读全文
posted @ 2018-03-27 20:19 SovietPower 阅读(267) 评论(0) 推荐(0)
摘要:[TOC] 2018.3.25 Test 时间: 7:30~11:30 (最后半小时不做了) 期望得分: 50+100+20=170 实际得分: 40+44+20=104 总结 T1:善用容斥。 T2:要求输出小数当然有它的道理。。 T3:行列分开考虑。看好怎么取模。如要求最大的答案,然后对答案取模 阅读全文
posted @ 2018-03-25 13:29 SovietPower 阅读(224) 评论(2) 推荐(0)
摘要:选$k$段不相交的区间,使其权值和最大。 阅读全文
posted @ 2018-02-07 11:26 SovietPower 阅读(548) 评论(0) 推荐(0)
摘要:"题目链接" cpp / 每一天的餐巾需求相当于必须遍历某些点若干次 设q[i]为Dayi需求量 (x,y)表示边x容y费 将每个点i拆成i,i',由i' T连(q[i],0)的边,表示求最大流的话一定要流满q[i] 对于i,由S i连(q[i],0)的边,表示满足Dayi需求后最多还能给出q[i] 阅读全文
posted @ 2018-02-06 16:49 SovietPower 阅读(143) 评论(0) 推荐(0)
摘要:"题目链接" cpp / 同"修车":对于每个厨师拆成p个点表示p个时间点,每个人向m个厨师每个时间点连边 这样边数O(nmp)+网络流 ≈O(nm p^2)(假设SPFA线性) = GG 可以发现这O(nmp)条边大多数是用不到的 所以可以只建少量边,每增广一条路加O(n)条边 复杂度就是O(nm 阅读全文
posted @ 2018-02-06 15:49 SovietPower 阅读(191) 评论(0) 推荐(0)
摘要:"题目链接" 上下界费用流: 最小路径覆盖: 阅读全文
posted @ 2018-02-06 14:20 SovietPower 阅读(170) 评论(0) 推荐(0)
摘要:"题目链接" cpp / 神tm看错题 2。。 假如人员i依次维修W1,W2,...,Wn,那么花费的时间是 W1 + W1+W2 + W1+W2+W3... = W1 n + W2 (n 1) + ... + Wn 1 即车j是第a个修的 产生的贡献是(n a+1) t[i][j] 车j是倒数第a 阅读全文
posted @ 2018-02-06 09:27 SovietPower 阅读(145) 评论(0) 推荐(0)
摘要:"题目链接" cpp //裸最大权闭合子图... include include include define gc() getchar() const int N=55005,M=N 阅读全文
posted @ 2018-02-05 18:05 SovietPower 阅读(135) 评论(0) 推荐(0)
摘要:"题目链接" 最小化最大的一条边,二分答案。然后就变成了给一张无向图定向使其为欧拉回路 二分答案后对于一个位置的两条边可能都保留,即双向边,需要给它定向;可能只保留小的一条,即单向边,不需考虑 如何给它定向呢,或者说怎么形成欧拉回路呢 形成欧拉回路的充要条件:弱连通图;每个点出度=入度 记点i的度数 阅读全文
posted @ 2018-02-05 17:41 SovietPower 阅读(151) 评论(0) 推荐(0)