HDU 5510 Bazinga
2015-10-31 18:59
351 查看
Bazinga
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 101 Accepted Submission(s): 41
[align=left]Problem Description[/align]
Ladies and gentlemen, please sit up straight.
Don't tilt your head. I'm serious.
#include <bits/stdc++.h> using namespace std; const int maxn = 2010; int fail[maxn]; void getFail(char str[]) { for(int i = 0,j = fail[0] = -1; str[i]; ++i) { while(j != -1 && str[i] != str[j]) j = fail[j]; fail[i + 1] = ++j; } } bool match(char sa[],char sb[]) { getFail(sa); for(int i = 0,j = 0; sb[i]; ++i) { while(j != -1 && sb[i] != sa[j]) j = fail[j]; if(!sa[++j]) return true; } return false; } char S[501][maxn]; bool invalid[501]; int main() { int kase,n,cs = 1; scanf("%d",&kase); while(kase--) { scanf("%d",&n); memset(invalid,false,sizeof invalid); for(int i = 0; i < n; ++i) { scanf("%s",S[i]); if(i && match(S[i-1],S[i])) invalid[i-1] = true; } int ret = -1; for(int i = n-1; i >= 0 && ret == -1; --i) { for(int j = 0; j < i && ret == -1; ++j) { if(invalid[j]) continue; if(!match(S[j],S[i])) ret = i + 1; } } printf("Case #%d: %d\n",cs++,ret); } return 0; }
View Code
相关文章推荐
- C语言:在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'
- Android 代码混淆
- DW学习心得(3)
- GPS数据处理
- Hive数据倾斜
- 【数据加密】AES加密和解密安卓篇(一)
- iOS开发中正则式的使用
- assert()函数用法总结
- 英语这件小事
- poj3579,二分找答案,再二分查找
- PyQt4 学习笔记4之事件与信号
- ZOJ 1654_Place the Robots(建立二分图)
- 【数据结构与算法】——基数排序
- Java changeFileName
- android--(绘制几何图形、图片、surfaceView)
- js 常用函数
- Jquery 使用小结
- GitHub:Android-Universal-Image-Loader
- 自定义标题栏(中间是三个文本)
- PostgreSQL下迭代实现数据库递归查询