Frog Traveler 最短路,bfs剪枝,打印路径
生活随笔
收集整理的這篇文章主要介紹了
Frog Traveler 最短路,bfs剪枝,打印路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給兩個長度為n的數組,初始位于索引n,目標是越過索引1,注意不能往后跳,每次可以跳0到a[i]a[i]a[i]米,即,身處索引iii,可以跳[0,a[i]][0, a[i]][0,a[i]]中的任意米,但是從i跳到j,會后退b[j]步,問最少多少步可以跳出,n<=3e5n<=3e5n<=3e5,并打印每次跳后到達地方的位置坐標(下滑前)
思路 :
- 從n開始bfs,每次將跳到且下滑后的點入隊,維護到達這個點的最小步數
- 優化剪枝是維護之前能到的最高(數值最小)的位置,枚舉當前點能到達的點,如果低于等于最高位置,說明后面跳的更少的方案都可以被剪枝了(因為對于同一個點下滑的距離是確定的,只是跳的距離可以選擇),break;并用當前點能到的最高的點維護最高位置
- 打印路徑,由于是輸出下滑前的點,而我們入隊用的是下滑后的點,所以再開一個ans數組映射
- 打印路徑的具體方案 :從終點開始,將點放入棧中,點變為其前驅,直到沒有前驅(即前驅為-1),然后再依次取出棧頂即可
總結
以上是生活随笔為你收集整理的Frog Traveler 最短路,bfs剪枝,打印路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Array Elimination 运算
- 下一篇: 音乐游戏 简单模拟,字符串,cin.ge