A - Going Home
HDU1533 Going Home
题解:费用流板子题,没什么好说的
B - Boxes
SOPJ Boxes
题解:又一道费用流板子题,但是我以为它是个序列然而它是个环
C - The Most Reckless Defense
The Most Reckless Defense CF1955H
题解:省流,写了篇题解:
为什么所有题解都是状压 DP ,这题不是看着很网络流(最小费用最大流)吗?
首先还是分析一下 \(r\) 的取值范围,可以把敌人增加的血量理解为减少防御塔的伤害,那么一座防御塔的总伤害最多是 \(500\pi r^2 - 3^r\),不难发现 \(r\) 最大为 \(12\),这就很符合网络流的范围。
接下来建图,把防御塔当作左部点,半径为右部点。有几种类型的边:
第 \(1\) 类:源点向左部点连边,流量为 \(1\),费用为 \(0\)。
第 \(2\) 类:右部点向汇点连边,流量为 \(1\),费用为 \(0\)。
第 \(3\) 类:每一个左部点向每一个右部点连边,流量为 \(1\),费用为这座防御塔在这个半径下的总伤害(减去了敌人增加的血量)的相反数。
对第 \(3\) 类边做一下解释:
费用流求的是最小费用,但是我们要求的是最大的伤害,所以取一个相反数,输出的时候反过来就行了。当然如果本来就是个负数肯定不连。
D - Heidi and Library (hard)
CF802C Heidi and Library (hard)
题解:考虑我们买了所有的书然后删掉一些的过程。
拆点,每个点有买和卖两个点。先从源点连向所有的买点,流量为1,费用为这本书价值。
然后每个买点向卖点连边,流量为1,费用为0,卖点向汇点连边,流量为1,费用为0
每一个买点向下一个买点连边,流量为k-1,费用为0,因为下一本书还要占一个位置
最后如果一本书之前有和它同类型的书,它的上一个买点连向上一本与它同类型的书,流量为1,费用为这种类型的书的价格的相反数(相当于上一种删掉一个同类型的书)
E - Machine Programming
CF164C Machine Programming
题解:对于每个任务,我们新建两个时间节点s[i]和t[i]代表起始时刻与终止时刻,并连一条容量为1,费用为c[i]的单向边。这类边限制了每个任务最多只能交给一台机器做,并且做了可以得到c[i]的利润。虑到值域很大,要离散化。
除此之外,还要按照时间顺序,将所有相邻的时间节点连接起来。将这些边的容量都设置为k,费用为0。也就是说每时每刻机器数量不能超过k,且闲置机器可以留到后面用,但不会得到利润。
现在我们把源点连向初始时间,最终时间连向汇点,跑最大费用最大流就可以了。输出方案时,只需要检查任务i对应的边有没有流量流经,有的话说明该任务被选择了。
G - 工作安排
P2488 [SDOI2011] 工作安排
题解:基本上就是版题,源点向每个员工多连几条边,设置一下流量即可
H - 软件开发
P2223 [HNOI2001] 软件开发
题解:先拆点,把每一天拆成早上和晚上(可以理解为早上是干净的毛巾,晚上是脏毛巾)。
源点和每天早上连边,流量为INF,费用为f,代表买新毛巾
源点和每天晚上连边,流量为当天所需的毛巾,意为一天结束获得这么多脏毛巾
早上和汇点连边,流量为当天所需的毛巾,费用为0,代表供应这么多新毛巾
第i天的晚上和第i+a+1天的早上连边,流量为INF,费用为fa(洗a天要a+1天后才能用)
第i天的晚上和第i+b+1天的早上连边,流量为INF,费用为fb(洗b天要b+1天后才能用)
I - 数字配对
P4068 [SDOI2016] 数字配对
题解:题目要求获得总价值不小于0的情况下匹配数最多,于是我们直接二分匹配数(流量)
考虑ai是aj倍数且ai除aj结果为质数的连边条件。可以把他们质因数分解,那么如果ai是aj的倍数且ai的质因子个数(重复的也算)比aj的大1,就可以匹配,所以根据质因子个数奇偶分成左部点和右部点,然后建一个超级汇点方便我们二分。剩下的建边就很简单了。
标签:20240703,总结,连边,题解,源点,流量,汇点,费用 From: https://www.cnblogs.com/wangwenhan/p/18282641