P14926 [北大集训 2025] 字符串问题

· · 题解

CTT 最简单题目。先通过莫反来去掉最小的限制,即设 g = f * \mu,则 w(l,r) = \sum_i g_{(r-l+1) / i},其中 i 是任意整周期。考虑求出每一个 run (l', r', p),然后计算 [l,r] \subseteq [l', r']p \mid i 的贡献;先枚举 i,再枚举 j = r - l + 1,这样对 r \in [l' + j - 1, r'] 的答案产生了 g_i 的贡献,差分即可处理;因为 p \mid i 的所有 run 不会重叠,即固定 i 后总长 \sum r'-l'+1 不超过 n,同时 i \mid jj \le r'-l'+1,于是总的枚举量是调和级数的 O(n \log n),复杂度同样。Submission。