CF1286E Fedya the Potter Strikes Back
题意:维护字符串
定义一个子区间
- 子串
和前缀 相同:其可疑度为 。 - 否则:可疑度为
。
每次操作后,求出当前的串的所有子区间的可疑度之和。
强制在线,
题意等价于动态
用 KMP 逐位求出
加入字符
考虑
- 对于原有的
: - 若新字符失配,则消失;
- 若新字符匹配,则长度加一。
- 若
则新增一个长度为 的 。
显然
记节点
需要删除的节点即为
接下来需要维护
只需这样的一个数据结构:支持删除,插入,全体取
用 std::map
维护每个权值及其出现次数,暴力取
删除某个
总复杂度