「LA-7264」Kejin Game
最小割模型,到达给定点所需的最小花费
题意
游戏内有一个技能树(为DAG),每个技能有一些前置技能,必须先学习完前置技能才能学习当前技能。
你是一个氪金玩家。你可以选择氪金跳过所有前置技能直接学习某个技能;或者氪金切断A到B的边,使技能A不再是B的前置技能(也就意味着学习技能B不再需要先学技能A),并且在学习完所有仍然存在的前置技能(可能为0)后,花费正常的价格学习当前技能。
求习得某个技能$S$所需的最小花费。
题解
对于技能$i$,有两种方式习得该技能:
- 直接氪金习得该技能
- 切断一些前置技能的边,习得剩下的前置技能(同样可以通过1,2两种方式),并且花费正常价格学习当前技能
考虑拆点,令点$i+n$为学习技能$i$的最小花费。
对$i$和$i+n$连边,容量为氪金学习该技能的花费;
对$S$和$i$连边,容量为正常价格学习该技能的花费;
对$j+n$和$i$连边,其中$j$为$i$的前置技能,容量为切断$j-i$的花费。
那么$S$到$i+n$的最小割即为”氪金直接学习当前技能“与”切断一部分前置技能,学习剩下的前置技能,正常学习当前技能“的花费当中的较小值。
代码
1 |
|