[Str记录]Loj#6070. 「2017 山东一轮集训 Day4」基因
command_block · · 个人记录
题意 : 给出一个字符串
强制在线,
旧文分档。请配合 回文自动机小记 食用。
- 解法一 : 分块
咕。
- 解法二 : 等差 + 主席树
先考虑所有询问的
此时,一个回文子串能贡献当且仅当其最靠后的出现(起始)位置
设
再来考虑一般情况怎么离线做。
从小到大增大
不难发现,终止链上的所有串都能够在结尾处出现,这比它们之前的出现都要靠后。
所以,对这些串,我们需要在
其中一个等差序列的情况如图 :
空心紫圈表示减一,实心紫圈表示加一。
不难发现,中间的大部分加减都抵消了,只剩下对红串(等差数列中最长串)上一次出现的
等差链顶容易求,可是红串的上一次出现位置我们并不能直接求出。
每次新增一个字符,就会使得终止链上所有串的最后出现被更新。只需要对红串的子树内前缀结尾点编号求个 dfs 序线段树维护。
若需要强制在线,将维护
时空复杂度均为
Loj评测记录