Kejin Game UVALive

来源:互联网 发布:淘宝如何查自己的评价 编辑:程序博客网 时间:2024/05/16 15:23

题目:https://vjudge.net/contest/194842#problem/D
参考:http://blog.csdn.net/lxy767087094/article/details/67638361

题意:给定一颗类似于dnf、lol点天赋时候的天赋(技能)树,技能获得的前提是他的前置技能都获得了,作为一个RMB玩家,你有特权:1.直接花费一定数量的钱获得某个技能。2.花费一定数量的钱将一个技能的某一个前置关系取消,即将前置技能到该技能的边消除(但不会获得该前置技能)。如果正常学习技能的话每一个技能都要花费一定量的时间,问获得指定的技能的最少的花费是多少。
思路:读完提就会知道是图论相关,第一反应是最短路什么的,但是这些复杂的优先级关系并非最短路能处理的。后来看题解发现是拆点+最小割,其实就是最大流模板题,随便套个网络流算法的模板就能过,但是此题重点和难点在于如何建图。假设要获得的技能为S。1.将所有点拆成ii'两个点,在建好的图中就用ii+n分别表示。2.i->j有边(ij的前置技能),则将i'j建边,权值为用钱将该边消除的花费。3.将源点和i建边,边权为正常学习该技能花费的时间(满足前置技能以后再学的花费)。4.ii'建边,权值为用钱直接获得该点的花费(氪金,不用管前置技能)。5.将S’与汇点建边,权值为inf
原创粉丝点击