HihoCoder 1252 Kejin Game
网络流建图神题!!! 同时也是2015年北京现场赛的金牌题,虽然我不可能去挑战金牌,但是也只有做这种神题,尽管不是自己想得,但A了之后仍然充满了满足。 题意: 给你一个DAG,表示一个游戏的技能树,也就是说某一些技能存在前置技能,但实际上这是为氪金大佬准备的游戏,有钱是真的可以为所欲为的,大佬们可以选择花钱直接无视所有前置技能直接习得某一个技能,也可以消除掉两个技能之间的依赖关系。 现在某个节俭的大佬想要学某一个技能,问最小花费。 思路: 说实话这道题一眼真的很容易想到图上DP,但是存在可以消除一个依赖的权利,使得DP存在后效性。 正解是最小割建模,这个最小割建模真的是非常巧妙: 1. 拆点建图,u -> u’ 的容量是直接氪金习得这一技能的花费 2. 如果u,v存在依赖关系 u -> v ,建边 u’ -> v ,容量为消除这个依赖的费用 3. 将源点与每一个技能连边,容量为按技能树学习的费用。 4. 将所要求的技能与汇点相连,容量为 inf 最后跑一遍最大流就是答案。 网上很多题解到这里就没了,也没有一个像样点的解释。 对于学习技能来说,…