思路:
如果号点到
号点是连通的,那么一定可以完成,反之一定不能完成,输出-1;
解法一:分层图最短路
图中的每个节点不仅限于“整数编号”,可以扩展到二维,用二元组代表一个节点,表示该点的编号以及第几层,显然在同层移动需要支出费用,向高层移动不需要支出费用。从
到
有长度为
的边,表示端点为
的电缆需要付费;从
到
有长度为
的边,表示端点为
的电缆是免费的。
然后很容易想到用动态规划来解,表示从
号基站到基站x,途中已经指定了
条免费的电缆时的进过路径上最贵的花费最小是多少。
就是二元组
的值,然后沿着边对应的状态转移。显然这个状态转移是有后效性的。为了解决后效性,可以利用迭代思想、借助
算法,直至所有状态有所收敛。
解法二:二分答案,(循环)双端队列
本题答案显然具有单调性,支付的钱更多,一定可以完工。于是我们可以二分答案,把问题转化为是否存在一种合法升级方法,使花费不超过,
一定会不断趋近
,直到等于
。
判定时可以根据题目要求,把升级价格大于的电缆长度视为
,不超过
的视为
,然后求
到n的
最短路即可。
本题求最短路时,因为是有后效性的,所以一个点可能会多次入队、出队。注意最小花费可能是
.