2015ACM/ICPC亚洲区沈阳站-重现赛 B - Bazinga (KMP)

- 题意:给你\(n\)个字符串,\(s_1,s_2,...,s_n\),对于\(i(1\le i\le n)\),找到最大的\(i\),并且满足\(s_j(1\le j<i)\)不是\(s_i\)的子串. 
- 题解:直接\(O(n^2)\)然后跑kmp匹配,这里注意要剪枝,不然会T,也就是说对于前\(i-1\)个串,如果它是后面某个串的子串,那么我们就不用对它跑kmp,因为它后面的某个串包含了它. 
- 代码: - int t;
 int n;
 string s[N];
 int ne[N];
 bool st[N]; int main() {
 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
 cin>>t;
 int cnt=1;
 while(t--){
 cin>>n;
 me(st,false,sizeof(st));
 for(int i=1;i<=n;++i){
 cin>>s[i];
 s[i]=" "+s[i];
 }
 int ans=-1;
 for(int i=1;i<=n;++i){
 for(int j=1;j<i;++j){
 if(st[j]) continue;
 string p=s[j];
 string ss=s[i];
 bool flag=false;
 for(int k=2,t=0;k<(int)p.size();++k){
 while(t!=0 && p[k]!=p[t+1]) t=ne[t];
 if(p[k]==p[t+1]) t++;
 ne[k]=t;
 } for(int k=1,t=0;k<(int)ss.size();++k){
 while(t!=0 && ss[k]!=p[t+1]) t=ne[t];
 if(ss[k]==p[t+1]) t++;
 if(t==(int)p.size()-1){
 flag=true;
 st[j]=true;
 break;
 }
 }
 if(!flag){
 ans=max(ans,i);
 break;
 }
 }
 }
 cout<<"Case #"<<cnt<<": "<<ans<<endl;
 cnt++;
 }
 return 0;
 }
 
2015ACM/ICPC亚洲区沈阳站-重现赛 B - Bazinga (KMP)的更多相关文章
- hdu 5510 Bazinga (kmp+dfs剪枝)  2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
		废话: 这道题很是花了我一番功夫.首先,我不会kmp算法,还专门学了一下这个算法.其次,即使会用kmp,但是如果暴力枚举的话,还是毫无疑问会爆掉.因此在dfs的基础上加上两次剪枝解决了这道题. 题意: ... 
- 2015ACM/ICPC亚洲区沈阳站重现赛-HDU5512-Pagodas-gcd
		n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, l ... 
- 2015ACM/ICPC亚洲区沈阳站-重现赛 M - Meeting  (特殊建边,最短路)
		题意:有\(n\)个点,\(m\)个集合,集合\(E_i\)中的点都与集合中的其它点有一条边权为\(t_i\)的边,现在问第\(1\)个点和第\(n\)个点到某个点的路径最短,输出最短路径和目标点,如 ... 
- 2015ACM/ICPC亚洲区沈阳站-重现赛  D - Pagodas
		题意:有\(n\)个数,开始给你两个数\(a\)和\(b\),每次找一个没出现过的数\(i\),要求满足\(i=j+k\)或\(i=j-k\),当某个人没有数可以选的时候判他输,问谁赢. 题解:对于\ ... 
- HDU 6227.Rabbits-规律 (2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学))
		Rabbits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total S ... 
- HDU 6225.Little Boxes-大数加法 (2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学))
		整理代码... Little Boxes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/O ... 
- 2016ACM/ICPC亚洲区沈阳站-重现赛赛题
		今天做的沈阳站重现赛,自己还是太水,只做出两道签到题,另外两道看懂题意了,但是也没能做出来. 1. Thickest Burger Time Limit: 2000/1000 MS (Java/Oth ... 
- 2016ACM/ICPC亚洲区沈阳站-重现赛
		C.Recursive sequence 求ans(x),ans(1)=a,ans(2)=b,ans(n)=ans(n-2)*2+ans(n-1)+n^4 如果直接就去解...很难,毕竟不是那种可以直 ... 
- 2017ACM/ICPC亚洲区沈阳站-重现赛
		HDU 6222 Heron and His Triangle 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6222 思路: 打表找规律+大数运算 首先我 ... 
随机推荐
- 通用寄存器_MOV_ADD_SUB_AND_OR_NOT
			通用寄存器 MOV指令 注意:目标操作数与操作数宽度必须一样 MOV 目标操作数,源操作数 作用:拷贝源操作数到目标操作数 1.源操作数可以是立即数.通用寄存器.段寄存器.或者内存单元. 2.目标操作 ... 
- kubernets之控制器之间的协作以及网络
			一 创建一个deployment的时候整个kubernets集群的资源和事件的调用链 1.1 创建一个deployment的资源,在提交的时候,集群中的调度器,控制器以及node节点上kubele ... 
- Java调用Linux命令执行
			调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ... 
- ctfhub技能树—sql注入—Refer注入
			手注 查询数据库名 查询数据表名 查询字段名 查询字段信息 脚本(from 阿狸) #! /usr/bin/env python # _*_ coding:utf-8 _*_ url = " ... 
- Spring入门及IoC的概念
			Spring入门 Spring是一个轻量级的Java开发框架,最早由Robd Johnson创建,目的为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,它是一个分层的JavaSE/EE轻量级开源 ... 
- Gradle使用及配置
			构建工具:Gradle(6.8) 下载地址:https://gradle.org/releases/ 下载最新版的二进制文件即可,下载"gradle-6.8.1-bin.zip文件,下载后完 ... 
- 运用 pyinstaller 打包的python exe文件运行 去掉命令行窗口及其他参数汇总
			运行exe文件的时候,会弹出一个dos命令窗口,这个窗口可以看到一些打印信息,如果想只运行tkinter 页面,去掉dos窗口需要在打包的时候 加上 -w 参数 pyinstaller -F XX.p ... 
- scrapy异步的爬虫框架简单的使用
			scrapy异步的爬虫框架 异步的爬虫框架 高性能的数据解析,持久化存储,全栈数据的爬取,中间件,分布式 框架:就是一个集成好了各种功能且具有很强通用性的一个项目模板. 环境安装: Linux: pi ... 
- Shell从入门到精通
			熟悉基本shell操作不仅是运维的基本功,对于开发来说也是多多益善,我在学习的过程中,总结了十个练手的小demo,并附上涉及的知识点,仅供娱乐. 1. 多线程ping监控,检查同一网段的IP是否连通 ... 
- jQuery 移入显示div,移出当前div,移入到另一个div还是显示。
			jQuery 移入移出 操作div 1 <style type="text/css"> 2 .box{ 3 position: relative; 4 } 5 .box ... 
