【题解】P10215 [CTS2024] 字符串游戏

\(f_i\) 表示现在玩游戏的人要对 \(suf_i\) 进行操作,可以获得的最大分数。
那么显然有 \(f_i=\max_{i<j\le n+1}\{(\sum_{x\ge i} \mathrm{LCP}(suf_i,suf_x)\ge j-i)-f_j\}\)
令代价函数是 \(w(i,j)\),显然可以使用 SA+二分+BIT 在 1log 时间内求出一个 \(w(i,j)\) 的值。

考虑 \(j<k,f_{j}\le f_{k}\),那么 \(k\) 一定不是决策点。那么所有可能的决策点可以使用一个单调栈维护。
考虑 \(i<j<k,f_i>f_j>f_k\),其中 \(k\) 作为决策点比 \(j\) 更优,则有 \(f_i>f_j\ge w(j,k)-f_k\ge w(i,k)-f_k=f_i\) 矛盾。
故可以每次取单调栈的栈顶,作为决策点更新 \(f_i\),然后直到不能 pop 退出。
时间复杂度 \(O(n\log n)\)

posted @ 2026-07-17 11:43  TallBanana  阅读(7)  评论(0)    收藏  举报