L3-028 森森旅游(单源最短路 + multiset 维护多重集最小值

该博客主要探讨了一种旅游路径优化问题的解决方案,通过Dijkstra算法计算单源最短路径,并结合旅游金转换,实现路径总成本最小化。文章中详细解释了算法思路,包括如何维护多集合以处理路径更新,并给出了完整的C++代码实现。

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+ai1))
这样我们就可以得到原始图中的最小花费
每次修改是将 a [ x ] a[x] a[x]<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值