随笔分类 -  图论--网络流24题(部分)

摘要:和那道可重区间集一样 不过这道题可能有垂直于x轴的线段,这就很烦了,直接连会有负环,判掉又会WA 可以想办法把r端点和l端点分开,又要保证答案不变 那么直接把区间l,r都乘以2,l=r时r++,否则l++,这样r就与l分开,并且对其它没有影响(相当于在x轴上多加了点) 这道题在LOJ上可以切 如果看 阅读全文
posted @ 2018-01-04 11:59 Cyhlnj 阅读(393) 评论(0) 推荐(0)
摘要:一个点同一时间只有一辆车,这个条件并没有用 因为你可以一辆车一辆车走 于是这个题就和深海机器人问题一样了,只需要把一个位置拆成两个点就好了 输出方案就DFS一下,记一个数组,每次搜过它就++,如果等于这条边流过的流量就不能走 然后就没了记得检查数组大小,不然WA两遍还不知道数组开小了 # inclu 阅读全文
posted @ 2018-01-04 09:06 Cyhlnj 阅读(221) 评论(0) 推荐(0)
摘要:费用流,第一个拆点,其它两个改一下INF就好 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace s 阅读全文
posted @ 2018-01-03 22:15 Cyhlnj 阅读(150) 评论(0) 推荐(0)
摘要:费用流 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy(a, b, siz 阅读全文
posted @ 2018-01-03 21:46 Cyhlnj 阅读(138) 评论(0) 推荐(0)
摘要:费用流,该怎么建图怎么建 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, b) memcpy( 阅读全文
posted @ 2018-01-03 21:42 Cyhlnj 阅读(118) 评论(0) 推荐(0)
摘要:费用流,两个点间连费用为负价值容量为1的边,再连费用为零容量为INF的边,建立S,T,分别向起点终点连边,跑最小费用流,对答案取反即可 水 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill( 阅读全文
posted @ 2018-01-03 21:25 Cyhlnj 阅读(174) 评论(0) 推荐(0)
摘要:费用流,离散化后,l向r连费用为负长度的边容量为1 相邻的连容量为k的边,最好建S和T # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof( 阅读全文
posted @ 2018-01-03 18:00 Cyhlnj 阅读(144) 评论(0) 推荐(0)
摘要:来回走就把它当成走两条既可以了 费用流跑一跑 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) # define Copy(a, 阅读全文
posted @ 2018-01-03 17:35 Cyhlnj 阅读(171) 评论(0) 推荐(0)
摘要:分层图,k只有10,每个k一层图 跑费用流,但容量为1,所以就是SPFA # include <bits/stdc++.h> # define RG register # define IL inline # define ID(a, b, c) ((c) * N * N + (a - 1) * N 阅读全文
posted @ 2018-01-03 15:22 Cyhlnj 阅读(669) 评论(0) 推荐(0)
摘要:S向地球连k的边,每天每个地方由上一天连INF边,每天月亮向T连边 枚举天数获取每天飞船的位置,由上一天的位置向这一天连满载的边 跑到人都送完位置,在合适的时候(玄学)break输出无解 # include <stdio.h> # include <stdlib.h> # include <iost 阅读全文
posted @ 2018-01-02 20:38 Cyhlnj 阅读(252) 评论(0) 推荐(0)
摘要:又是套路啊 黑白染色,S,T连不同色的,求最小割,用总和-最小割即为答案 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <math.h> # define ll 阅读全文
posted @ 2018-01-02 20:24 Cyhlnj 阅读(216) 评论(0) 推荐(0)
摘要:套路啊 棋盘黑白染色,S连黑,白连T,黑白间根据骑士的走法连边,求出最小割 最大独立集=点数-最小点覆盖;最小点覆盖=最大流=最小割 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> 阅读全文
posted @ 2018-01-02 20:22 Cyhlnj 阅读(153) 评论(0) 推荐(0)
摘要:最大权闭合子图:等于正边权 - 最大流(最小割) 我的理解 最大收益就是要求最小损失,那么用最小割模型(别问我是怎么想到的) S向实验连边,表示割掉这条边,把实验割给T会有损失 T向配置连边,表示割掉这条边,把配置割给S会有损失 跑出的最小割(最大流)就是损失 # include <stdio.h> 阅读全文
posted @ 2018-01-02 20:11 Cyhlnj 阅读(165) 评论(0) 推荐(0)
摘要:枚举放的球,先假设新建柱子,拆成两个点,第一个点连S,表示后面还可以放;第二个连T表示放到其他柱子上;再枚举放过的数和它是否组成完全平方数,枚举的数的第一个点向它的第二个点连边,表示这个球可以放到其他球上,容量都为一 每次跑最大流出来的表示会消掉的柱子个数,如果此时球-消去的比n大则break输出答 阅读全文
posted @ 2018-01-02 20:02 Cyhlnj 阅读(192) 评论(0) 推荐(0)
摘要:我的方法比较复杂 S向每个仓库连初始量的边,每个仓库拆成两个,后往前连INF边,前往T连平均值的边,边权都是0 再S每个仓库向相邻仓库的第二个点连INF边,边权为1 再费用流即为答案 # include <bits/stdc++.h> # define RG register # define IL 阅读全文
posted @ 2018-01-02 19:49 Cyhlnj 阅读(164) 评论(0) 推荐(0)