首页 > 其他分享 >P9026 [CCC2021 S4] Daily Commute

P9026 [CCC2021 S4] Daily Commute

时间:2024-05-29 20:11:14浏览次数:23  
标签:下车 P9026 Daily S4 地铁 Commute CCC2021

原题链接

一步一步来

1.假设D为1,你要怎么求?

每个点乘地铁的时间是唯一的,也就是说,如果我一开始先走一段路到A点再坐地铁,等价于我直接坐地铁到A点,下地铁的瞬间再次上车。
所以最优路径一定可以是先从起点乘地铁到某个点,然后再一直走路到终点

因此我们可以遍历 \(S\) 的每个点,求出在该点下车的最短时间
由于求多条最短路,所以我们改变建边的方向,求单源最短路

时间复杂度 \(O(m+n)\)

2.由于D的范围很大,我们没法每天遍历一遍S,发现交换只会影响两个点的下车的最短时间
所以我们可以用堆维护所有点下车的最短时间,只有堆顶元素处于它这一天应该在的位置上时有效

code


标签:下车,P9026,Daily,S4,地铁,Commute,CCC2021
From: https://www.cnblogs.com/pure4knowledge/p/18220975

相关文章

  • CF1912H Hypercatapult Commute记录
    题目链接:https://codeforces.com/problemset/problem/1912/H题意有\(n\)个城市,\(m\)个人。第\(i\)人想从城市\(a_i\)移动到\(b_i\)。每个城市每天可以使用至多一次传送胶囊,可以将任意数目的人从该城市传送到任意一个(相同的)其它城市。注意传送有时间顺序。求是否可以让......
  • 无涯教程-Clojure - commute函数
    通勤还用于更改引用类型的值,就像alter和ref-set一样,唯一的区别是,这也需要放在"dosync"块中。commute-语法(commuterefnamefun)参数   -'refname'是保存参考值的变量的名称。"fun"是用于更改引用类型的值的函数。返回值 -引用及其相应的新值。commute-示例......