博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[POI2000]病毒
阅读量:6245 次
发布时间:2019-06-22

本文共 1155 字,大约阅读时间需要 3 分钟。

题目大意:

  给定$n$个字符串$s_i(\sum|s_i|\leq30000)$,问是否能够造出一个无限长的字符串$t$,使得$t$中没有任何一个$s_i$。

思路:

  构造AC自动机。在自动机上DFS,避开所有的危险结点,判断是否有环。若存在环,则$t$存在。

1 #include
2 #include
3 #include
4 inline int getint() { 5 register char ch; 6 while(!isdigit(ch=getchar())); 7 register int x=ch^'0'; 8 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); 9 return x;10 }11 const int N=30001,S=2;12 char s[N];13 class AhoCorasick {14 private:15 int ch[N][S],fail[N];16 bool dan[N],ins[N],vis[N];17 std::queue
q;18 int sz,new_node() {19 return ++sz;20 }21 int idx(const int &c) const {22 return c^'0';23 }24 public:25 void insert(const char s[]) {26 int p=0;27 for(register int i=0;s[i];i++) {28 const int c=idx(s[i]);29 p=ch[p][c]?:ch[p][c]=new_node();30 }31 dan[p]=true;32 }33 void get_fail() {34 for(register int c=0;c

 

转载于:https://www.cnblogs.com/skylee03/p/8571547.html

你可能感兴趣的文章
Nginx使用的php-fpm的两种进程管理方式及优化
查看>>
CTeX-2.4.6-Full
查看>>
python编码
查看>>
增加squid的filedescriptors
查看>>
Xmanger远程登录Linux服务器
查看>>
Windows Ready Boost,使用闪存设备提高性能
查看>>
mysql导入导出包括函数或者存储过程
查看>>
工作流程组件介绍 ━ RDIFramework.NET ━ .NET快速信息化系统开发框架
查看>>
Struts2中Action访问Servlet API的三种方法
查看>>
个性化自己系统的ContextLoaderListener实现
查看>>
Java之final修饰
查看>>
CentOS下添加用户并且让用户获得root权限
查看>>
5月29早上VM HA故障
查看>>
mysqldump参数详解
查看>>
new begin
查看>>
List集合按Size分组
查看>>
windows下安装jandgo
查看>>
【译】你可以用GitHub做的12件 Cool 事情
查看>>
看图你就明白一个光棍的道理 [图片]
查看>>
ul宽度不固定,li的数量不定要保持居中???
查看>>