L3-028 森森旅游 (30 分)
思路:
首先不考虑查询和修改操作,只考虑原始图中的答案
把路径分为前半段现金支付和后半段旅游金支付,可以发现去枚举一个决策点,维护 m i n ( c o s t 1 + c o s t 2 ) min(cost_1+cost_2) min(cost1+cost2) 即可
前半段花费显然是单源最短路,后半段建反图也同样是单源最短路
由于后半段是旅游金,需要转化为现金,答案即为 m i n ( c o s t 1 + ( c o s t 2 + a i − 1 ) a i ) min(cost_1+ \frac{(cost_2+a_i-1)}{a_i}) min(cost1+ai(cost2+ai−1))
这样我们就可以得到原始图中的最小花费
每次修改是将 a [ x ] a[x] a[x]<
L3-028 森森旅游(单源最短路 + multiset 维护多重集最小值
最新推荐文章于 2024-04-07 12:36:58 发布
该博客主要探讨了一种旅游路径优化问题的解决方案,通过Dijkstra算法计算单源最短路径,并结合旅游金转换,实现路径总成本最小化。文章中详细解释了算法思路,包括如何维护多集合以处理路径更新,并给出了完整的C++代码实现。

最低0.47元/天 解锁文章
910

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



