随笔分类 - 图论-网络流
摘要:测试地址:交换棋子 做法:本题需要使用费用流+拆点。 容易想到,把全部白色棋子都移动到目标位置的话,剩下的黑色棋子也自然都移动到目标位置了,因此我们只考虑白色棋子。又注意到一枚棋子的移动可以看成一份流量,这样问题就转化成了网络流问题,因此我们要考虑如何将题目...
阅读全文
摘要:测试地址:方伯伯运椰子 做法:本题需要用到01分数规划+SPFA判负环。 我们先尝试找到另一种更好的描述压缩和扩容方案的方法,我们发现,实际上压缩就是在退流,扩容就是在增广,那么我们知道,要找到一种方法使得总流量不变,只需要沿着残余网络中的某一个环走就行了。...
阅读全文
摘要:测试地址:LIS 做法:本题需要用到最小割+贪心+退流。 如果仅仅是求最小代价,就是很经典的模型了,令f(i)" role="presentation" style="position: relative;">f(i)f(i)为以第i" role="pres...
阅读全文
摘要:测试地址:支线剧情 做法:本题需要用到有上下界费用流。 我们发现题目要求的就是,以点1" role="presentation" style="position: relative;">11为源点,所有其他点为汇点的最小费用可行流,每条边的流量必须在区间[1...
阅读全文
摘要:测试地址:PIGS 题目大意:有m" role="presentation" style="position: relative;">mm个猪圈,每个猪圈内有一些猪,有n" role="presentation" style="position: relat...
阅读全文
摘要:测试地址:网络扩容 做法:本题需要用到最大流+费用流+拆边。 首先第一问直接做最大流就行了,记得到的答案为maxf" role="presentation" style="position: relative;">maxfmaxf,主要是第二问。我们发现原网...
阅读全文
摘要:测试地址:星际竞速 做法:本题需要用到费用流+拆点。 分析题目中要求的路径,我们发现在一条满足要求的路径中,除起点那颗不和任何点连通的点外,所有点的入度都是1" role="presentation" style="position: relative;">...
阅读全文
摘要:测试地址:美食节 做法:本题需要用到费用流+拆点+动态加边。 首先,提交完此题后,本人在BZOJ中达到了150AC,小小地庆祝一下~ 好了,回到题目,我们发现这题除了数据范围,和BZOJ1070完全是一样的,建模方法见我写的BZOJ1070题解。 那么这题数...
阅读全文
摘要:测试地址:修车 做法:本题需要用到费用流+拆点。 我们很容易想到将技术人员和车匹配起来,但这样有一个问题:当一个技术人员修多辆车的时候,产生的费用不能简单地用相加来刻画。因此我们需要运用一个方法:拆点。 将每个技术人员拆成n" role="presentat...
阅读全文
摘要:测试地址:球队收益 做法:本题需要用到费用流+拆边。 由于每场比赛只能有一个胜者,不难想到从每场比赛向比赛双方的队伍各连一条容量为1" role="presentation" style="position: relative;">11的边,并从源点向每场比...
阅读全文
摘要:测试地址:Array and Operations 题目大意:给定一个包含n" role="presentation" style="position: relative;">nn个元素的数列A" role="presentation" style="pos...
阅读全文
摘要:测试地址:Bridges 做法:本题需要用到欧拉回路+二分+最大流。 首先回顾欧拉回路的定义:经过图中一条边一次且仅一次的回路。那么如果原图不是欧拉图(即存在度数为奇数的点),则显然不存在这样的回路,否则因为要求最大值最小,我们二分最大的边权x" role=...
阅读全文
摘要:测试地址:奇怪的游戏 做法:本题需要用到分类讨论+二分+最大流。 首先看到棋盘,先黑白染色,然后我们发现每次操作两个相邻的格子一定是不同色的,意味着黑白格子得到增加的权值和是一样的。那么令x" role="presentation" style="posit...
阅读全文
摘要:测试地址:游戏 做法:本题需要用到二分图匹配或最大流。 注意到一个炸弹能炸到的区域是一行中由硬石头分割成的一段以及一列中由硬石头分割成的一段,那么问题等价于,在同一段中只能有一个炸弹,问最多能放多少炸弹。 我们把一行或一列中由硬石头分割成的连续一段看做点,那...
阅读全文
摘要:测试地址:最小割 做法:本题需要用到最小割+SCC。 首先,根据最大流和最小割的关系不难看出,跑完最大流后没有满流的边都不可能出现在最小割中。 那么对于剩下的边,如果它的两个端点在残余网络中(注意,残余网络是带反向边的)在同一个强连通分量内,很显然它也不可能...
阅读全文
摘要:测试地址:不同的最小割 做法:本题需要用到最小割树。 看到两两间的最小割,就想到最小割树了,于是仿照BZOJ2229那题建最小割树,最后树上有多少不同的边权就等同于有多少不同的最小割。其实连树都不用建出来,直接用一个数组存储出现的最小割,最后排一次序就行了。...
阅读全文
摘要:测试地址:最小割 做法:本题需要用到分治+最小割。 暴力算最小割需要算n(n−1)2" role="presentation" style="position: relative;">n(n−1)2n(n−1)2次最小割,难以接受,这时候就要掏...
阅读全文
摘要:测试地址:老C的方块 做法:本题需要用到最小割。 看到网格,首先想到黑白染色处理。但是染色之后我们一时还看不出有什么性质,所以我们先分析题目中的条件。 我们考虑这样一个区域:中间是特殊公共边,包含特殊公共边旁的两个格子和它们相邻的格子,共包含8" role=...
阅读全文
摘要:测试地址:寿司餐厅 做法:本题需要用到最小割。 首先,仔细看题,计算价钱中的c" role="presentation" style="position: relative;">cc是种数而不是个数,那么我们发现每种贡献都仅会被计算一次,考虑把这些东西建成点...
阅读全文
摘要:测试地址:Hard Life 题目大意:有一个无向图,要从里面选出一个子图,使得边数和点数的比最大,输出一个合法方案。 做法:本题需要用到01分数规划+最小割。 首先要求比值最大,我们立刻想到01分数规划的套路,二分比值,这样就变成判定性问题:存不存在一个子...
阅读全文

浙公网安备 33010602011771号