思路
这道题首先建立一个双向链表,然后预处理出 g a , g b ga,gb ga,gb ,分别表示从i起跳可以跳到次小和最小的位置。
然后就可以开始DP,用倍增法优化可得
{ f 0 , i , , j = f 0 , f 0 , i , j − 1 , j − 1 d i s 0 , i , j = d i s 0 , i , j − 1 + d i s 0 , f 0 , i , j − 1 , j − 1 d i s 1 , i , j = d i s 1 , i , j − 1 + d i s 1 , f 0 , i , j − 1 , j − 1 \begin{cases} f_{0,i,,j}=f_{0,f_{0,i,j-1},j-1} \\dis_{0,i,j}=dis_{0,i,j-1}+dis_{0,f_{0,i,j-1},j-1} \\ dis_{1,i,j}=dis_{1,i,j-1}+dis_{1,f_{0,i,j-1},j-1} \end{cases} ⎩⎪⎨⎪⎧f0,i,,j=f0,f0,i,j−1,j−1dis0,i,j=dis0,i,j−1+