摘要:
http://codeforces.com/problemset/problem/86/C 自动机好题,给你m个DNA片段,询问有多少个长度为n的DNA,被这m个片段中的若干个可重复的完全覆盖。 太久没写关于AC自动机的题目,有点生疏想了一会才知道怎么做=。=~,对于AC自动机,有这样一个特性,停留在深度较大的节点时候可以继续拥有当前串所有更短后缀的信息,因为可以沿着fail指针寻找其后缀,故我们dp的时候需要贪心地尽量停留在高深度的节点。但是同时会丢失一部分信息,如果当前串前面一部分已经匹配成功,但是由于我们的贪心选择,我们没记录这个信息,因此额外添加dp的一维,当前串还有几位没被成功覆盖。 阅读全文