、

CF1483F-Exam

题意

\(n\) 个字符串 \(S_{1, \ldots ,n}\),求有多少个 \((i,j)\) 满足 \(S_j\) 是 \(S_i\) 的子串,且不存在一个 \(k\neq i \land k\neq j\) 使得 \(S_j\) 是 \(S_k\) 的子串,\(S_k\) 是 \(S_i\) 的子串。

思路

子串考虑 AC 自动机。我们考虑对于 \(i\),那么它里面的每一个 \(u\) 都只可能对应一个最靠近它的祖先构造答案,那么答案范围是 \(\mathcal{O}(\sum|S_i|)\) 的。

我们考虑枚举 \(S_i\),然后把它可能的之多 \(|S_i|\) 个 \(j\) 拿下来,现在就是判断它们合不合法。这个是容易的,我们直接维护一下每一个位置最后到哪里,然后判断是否被包括即可。

那么一个 \(j\) 合法当且仅当它的出现次数与它在上面的合法次数相等。这样就不存在算重的情况了也可以比较方便地维护。

posted @ 2026-09-24 14:42  tanghg  阅读(6)  评论(0)    收藏  举报