CF1483F口胡
《线 性 做 法》
首先我们对所有串建立 ACAM,不难发现对于一个 \(i\),可能的 \(j\) 一定是 \(i\) 所有后缀节点在 fail 树上第一个被打标记的祖先。
但是这些祖先的内部可能在 fail 树上仍然存在祖孙关系。我们需要去掉存在祖孙关系的父亲节点。
我们将节点按照括号序的左端点从小到大排序。如果目前答案序列的最后一个被自身包含就将其踢出答案序列。
可以发现是对的。因为儿子一定在父亲之后出现。并且发现区间互不包含,不在答案序列的最后一个就不可能被我删掉。
瓶颈变成了对若干个区间排序。
这很简单。我们将所有区间丢到一起排序,这个可以基数排序所以是线性的,然后丢回去的时候丢到对应序列里面就可以了。
复杂度 \(O(n+m)\)。