图片说明

思路:
如果号点到号点是连通的,那么一定可以完成,反之一定不能完成,输出-1;

解法一:分层图最短路

图中的每个节点不仅限于“整数编号”,可以扩展到二维,用二元组代表一个节点,表示该点的编号以及第几层,显然在同层移动需要支出费用,向高层移动不需要支出费用。从有长度为的边,表示端点为的电缆需要付费;从有长度为的边,表示端点为的电缆是免费的。
然后很容易想到用动态规划来解,表示从号基站到基站x,途中已经指定了条免费的电缆时的进过路径上最贵的花费最小是多少。就是二元组的值,然后沿着边对应的状态转移。显然这个状态转移是有后效性的。为了解决后效性,可以利用迭代思想、借助算法,直至所有状态有所收敛。

MyCode:

解法二:二分答案,(循环)双端队列

本题答案显然具有单调性,支付的钱更多,一定可以完工。于是我们可以二分答案,把问题转化为是否存在一种合法升级方法,使花费不超过一定会不断趋近,直到等于
判定时可以根据题目要求,把升级价格大于的电缆长度视为,不超过的视为,然后求到n的最短路即可。

本题求最短路时,因为是有后效性的,所以一个点可能会多次入队、出队。注意最小花费可能是.

MyCode: