草,调了一年发现我把串的个数当总串长写了……
我寻思我写 CF666E 的时候就注意到这个问题了呀(
线段树合并求出每个状态在多少个字符串里出现了,并标记有哪些状态是出现至少 k 次的。
那么对于每个串,从每个前缀往上跳 Parent Tree 计算符合条件的子串的个数即可。
然而暴力跳复杂度显然很危险(
然而实际上可以直接从根向下 DP 预处理出个数(
然而实际上只需要向上找一个最深的符合条件的状态即可,因为符合条件在树链上显然有单调性(
代码:
1 |
|
草,调了一年发现我把串的个数当总串长写了……
我寻思我写 CF666E 的时候就注意到这个问题了呀(
线段树合并求出每个状态在多少个字符串里出现了,并标记有哪些状态是出现至少 k 次的。
那么对于每个串,从每个前缀往上跳 Parent Tree 计算符合条件的子串的个数即可。
然而暴力跳复杂度显然很危险(
然而实际上可以直接从根向下 DP 预处理出个数(
然而实际上只需要向上找一个最深的符合条件的状态即可,因为符合条件在树链上显然有单调性(
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment