题目:https://vjudge.net/contest/194842#problem/D
参考:http://blog.youkuaiyun.com/lxy767087094/article/details/67638361
题意:给定一颗类似于dnf、lol点天赋时候的天赋(技能)树,技能获得的前提是他的前置技能都获得了,作为一个RMB玩家,你有特权:
1.直接花费一定数量的钱获得某个技能。
2.花费一定数量的钱将一个技能的某一个前置关系取消,即将前置技能到该技能的边消除(但不会获得该前置技能)。
如果正常学习技能的话每一个技能都要花费一定量的时间,问获得指定的技能的最少的花费是多少。
思路:读完提就会知道是图论相关,第一反应是最短路什么的,但是这些复杂的优先级关系并非最短路能处理的。后来看题解发现是拆点+最小割,其实就是最大流模板题,随便套个网络流算法的模板就能过,但是此题重点和难点在于如何建图。
假设要获得的技能为S。
1.将所有点拆成i和i'两个点,在建好的图中就用i和i+n分别表示。
2.若i->j有边(i为j的前置技能),则将i'到j建边,权值为用钱将该边消除的花费。
3.将源点和i建边,边权为正常学习该技能花费的时间(满足前置技能以后再学的花费)。
4.将i与i'建边,权值为用钱直接获得该点的花费(氪金,不用管前置技能)。
5.将S’与汇点建边,权值为inf。
本文针对一个类似DNF、LOL的技能树问题,探讨了如何通过拆点与最小割的方法来计算获得特定技能所需的最少花费。该问题可通过构建图模型,并运用最大流算法求解。
955

被折叠的 条评论
为什么被折叠?



