AGC007D Shik and Game
题意: 初始时 Shik 君在数轴的原点,出口坐标为
Shik 君拿着
到一个小熊的位置时,他可以送给这个小熊一块糖果,这个过程不花时间。
小熊收到糖果后,
Shik 君想知道,他从出发到收集了所有金币抵达出口,最少要花费多长时间。
将
考虑简化决策,注意到数轴上某个位置只能被经过奇数次。
若每个位置都只能被经过一次,那么策略将是单调的 : 一直向右,在每个小熊处都等待直到拾得金币。这显然并非最优策略。
所以,我们应当允许适当的回头,在等待这只小熊的同时,先给后面的熊发糖,然后及时回来。
因此,同一个位置被经过三次是需要被允许的。但是若经过五次,可以调整为三次,且不会变劣,如下图:
其中红色表示最晚到达某一位置的方案,蓝色表示最早到达某一位置的方案。显然,红色越晚越好,蓝色越早越好。
下图中的红色均不早于上图中的红色,蓝色均不晚于上图中的蓝色,故不会更劣。
于是,我们有关键结论:某个位置只有可能被经过一次或三次。
由此,可以考虑
设
转移时,枚举经过三次的一段小熊,则有 :
有
其中 ,
无论如何转移,
于是有
转移为
,取 的最小值即可。 转移为
,取 的最小值即可。
其中,第一类转移的
使用单调队列维护即可,复杂度