Kejin Game UVALive - 7264 拆点+最小割 15北京区域赛

本文针对一个类似DNF、LOL的技能树问题,探讨了如何通过拆点与最小割的方法来计算获得特定技能所需的最少花费。该问题可通过构建图模型,并运用最大流算法求解。

题目:https://vjudge.net/contest/194842#problem/D
参考:http://blog.youkuaiyun.com/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值