CF1483F口胡

《线 性 做 法》

首先我们对所有串建立 ACAM,不难发现对于一个 \(i\),可能的 \(j\) 一定是 \(i\) 所有后缀节点在 fail 树上第一个被打标记的祖先。

但是这些祖先的内部可能在 fail 树上仍然存在祖孙关系。我们需要去掉存在祖孙关系的父亲节点。

我们将节点按照括号序的左端点从小到大排序。如果目前答案序列的最后一个被自身包含就将其踢出答案序列。

可以发现是对的。因为儿子一定在父亲之后出现。并且发现区间互不包含,不在答案序列的最后一个就不可能被我删掉。

瓶颈变成了对若干个区间排序。

这很简单。我们将所有区间丢到一起排序,这个可以基数排序所以是线性的,然后丢回去的时候丢到对应序列里面就可以了。

复杂度 \(O(n+m)\)

posted @ 2022-03-11 11:12  Prean  阅读(23)  评论(0编辑  收藏  举报
var canShowAdsense=function(){return !!0};