摆了一天补篇题解可还行
先断环成链复制一遍,再前缀和预处理
显然终点都在$[n+1,2n]$中,把终点当作起点倒推
考虑设走$f[i]$步可以到达的最远的点为$fa[i]$
如果当前所在点为$i$,找到可以到达的最远的点为$j$
那么$f[i]=f[j]+1$,$fa[i]=fa[j]$
如果$i-fa[i]>=n$,那么直接退出输出$f[i]$
因为不存在一个更靠后的位置答案更优,证明不会
1 |
|
Lonely Kid Hides in Heart
摆了一天补篇题解可还行
先断环成链复制一遍,再前缀和预处理
显然终点都在$[n+1,2n]$中,把终点当作起点倒推
考虑设走$f[i]$步可以到达的最远的点为$fa[i]$
如果当前所在点为$i$,找到可以到达的最远的点为$j$
那么$f[i]=f[j]+1$,$fa[i]=fa[j]$
如果$i-fa[i]>=n$,那么直接退出输出$f[i]$
因为不存在一个更靠后的位置答案更优,证明不会
1 | #include<bits/stdc++.h> |