【后缀自动机】HDU 4416 Good Article Good sentence

通道:http://acm.hdu.edu.cn/showproblem.php?pid=4416

题意:给一个字符串S和一系列字符串s1~sn,问在S中有多少个不同子串满足它不是s1~sn中任意一个字符串的子串

思路:对母串SAM,然后对于s1~sn我们从上往下匹配,设match[i]表示n个子串和母串的i节点匹配的最大长度,然后如果match[i]<val[i],说明[match[i]+1,val[i]]这段是不同的所以ans+=val[i]-match[i],对于match[i]=0的节点,表示这个点的状态都满足,所以ans+=val[i]-val[fa[i]];

代码:https://github.com/Mithril0rd/Rojo/blob/master/hdu4416.cpp

TAG:不是任意一个子串的子串。

posted @ 2014-10-17 20:58  mithrilhan  阅读(424)  评论(0编辑  收藏  举报