您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页[BZOJ2938][Poi2000]病毒

[BZOJ2938][Poi2000]病毒

来源:华佗小知识

题目描述:

 

解析:做了这个题对AC自动机有了更深的理解。先建立补全的AC自动机,发现如果有无限长的串使得任意一个原串都不在这个串中,一定满足这个补全的AC自动机在不经过叶子结点的情况下有环。简略证明一下:发现一个点跳fail的过程的实质即为在一个字符串后面增加一个字符,如果在不经过叶子结点的情况下有环,说明这个串可以无限延伸。怎么在图中判环呢?可以从原点开始dfs,建立两个标记数组,一个用来标记走没走过,走过的点不能再次走,否则会出现死循环。一个用来标记是否在栈中,如果重复出现在栈中则说明有换,回溯的时候记得要把标记清空。

细节:1.这个补全的图中可以有自环,循环节为0或1。2.叶子结点的标记要下传。3.不要在某谷交,数据很水。

附上代码:

 

转载于:https://www.cnblogs.com/JoshDun/p/11210269.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务