令 dp[i] 表示当前轮中,从编号同余于 iii 的选手开始、连续 2r2^r2r 人进行比赛后的胜者手势。
dp[i]
初始 r=0r=0r=0 时 dp[i]=S[i]。把规模从 2r2^r2r 翻倍到 2r+12^{r+1}2r+1 时,左半胜者是 dp[i],右半从 i+2ri+2^ri+2r 开始;由于选手手势以 NNN 为周期,只需访问 dp[(i+2^r) mod N],两者按剪刀石头布规则决出新状态。
dp[i]=S[i]
dp[(i+2^r) mod N]
每轮把偏移量 2r mod N2^r\bmod N2rmodN 翻倍并对 NNN 取模,连续更新 KKK 轮,最后 dp[0] 就是完整比赛的胜者。
dp[0]
时间复杂度为 O(NK)O(NK)O(NK),空间复杂度为 O(N)O(N)O(N)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户