HDU 5510 Bazinga 多种姿势
来源:互联网 发布:淘宝夜店装 编辑:程序博客网 时间:2024/05/20 05:59
Bazinga
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 4910 Accepted Submission(s): 1543
Problem Description
Ladies and gentlemen, please sit up straight.
Don't tilt your head. I'm serious.
Forn given strings S1,S2,⋯,Sn , labelled from 1 to n , you should find the largest i (1≤i≤n) such that there exists an integer j (1≤j<i) and Sj is not a substring of Si .
A substring of a stringSi is another string that occurs in Si . For example, ``ruiz" is a substring of ``ruizhang", and ``rzhang" is not a substring of ``ruizhang".
Don't tilt your head. I'm serious.
For
A substring of a string
Input
The first line contains an integer t (1≤t≤50) which is the number of test cases.
For each test case, the first line is the positive integern (1≤n≤500) and in the following n lines list are the strings S1,S2,⋯,Sn .
All strings are given in lower-case letters and strings are no longer than2000 letters.
For each test case, the first line is the positive integer
All strings are given in lower-case letters and strings are no longer than
Output
For each test case, output the largest label you get. If it does not exist, output −1 .
Sample Input
45ababczabcabcdzabcd4youlovinyouaboutlovinyouallaboutlovinyou5dedefabcdabcdeabcdef3abaccc
Sample Output
Case #1: 4Case #2: -1Case #3: 4Case #4: 3
Source
2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
Recommend
wange2014 | We have carefully selected several similar problems for you: 6216 6215 6214 6213 6212
这个题比较好玩啊,感觉题意和图片没啥关系,可能是用来活动气氛的把,题意就是让你找到第i个字符串,他位置前面的字符串有一个不是他子串的字符串。
思路:已第i个串为基地,去找,如果他是他后面某一个串的子串,那么就break掉就可以了,否则,他后面的这个串就有可能是最后解,用max取一下最优
my ugly code(KMP匹配)
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>using namespace std;int t,n;char a[521][2017];int cas=1;int e[521];void getfail(char *p,int *f){ int m=strlen(p); f[0]=f[1]=0; for(int i=1;i<m;i++){ int j=f[i]; while( j && p[j]!=p[i]) j=f[j]; f[i+1]=(p[i]==p[j])?j+1:0; }}int kmp(char *t,char *p,int *f){ int n=strlen(t),m=strlen(p); getfail(p,f); int j=0; for(int i=0;i<n;i++){ while(j && p[j]!=t[i]) j=f[j]; if(p[j] == t[i] ) j++; if(j==m){ return 1; } } return -1;}int main(){ int f[2017]; scanf("%d",&t); while(t--){ scanf("%d",&n); int max_len=0; for(int i=1;i<=n;i++){ scanf("%s",a[i]); } for(int i=0;i<=n;i++) e[i]=1; int ans=-1,flag; for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ if(e[j]){ int tmp=kmp(a[j],a[i],f); if( tmp == 1){ break ; } else{ e[j]=0; ans=max(ans,j); } } } } printf("Case #%d: %d\n",cas++,ans); } return 0;}
my ugly code(strstr()匹配)
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>using namespace std;int t,n;char a[521][2017];int cas=1;int e[521];void getfail(char *p,int *f){ int m=strlen(p); f[0]=f[1]=0; for(int i=1;i<m;i++){ int j=f[i]; while( j && p[j]!=p[i]) j=f[j]; f[i+1]=(p[i]==p[j])?j+1:0; }}int kmp(char *t,char *p,int *f){ int n=strlen(t),m=strlen(p); getfail(p,f); int j=0; for(int i=0;i<n;i++){ while(j && p[j]!=t[i]) j=f[j]; if(p[j] == t[i] ) j++; if(j==m){ return 1; } } return -1;}int main(){ int f[2017]; scanf("%d",&t); while(t--){ scanf("%d",&n); int max_len=0; for(int i=1;i<=n;i++){ scanf("%s",a[i]); } for(int i=0;i<=n;i++) e[i]=1; int ans=-1,flag; for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ if(e[j]){ if( strstr(a[j],a[i]) ){ break ; } else{ e[j]=0; ans=max(ans,j); } } } } printf("Case #%d: %d\n",cas++,ans); } return 0;}
这里有个东西不明白,为什么strstr()函数比kmp还快,如果有大佬看到这篇文章,或者你旁边有位大佬,求解答,感激不尽
阅读全文
0 0
- HDU 5510 Bazinga 多种姿势
- HDU 5510 Bazinga
- HDU 5510 Bazinga(思维)
- hdu 5510 -Bazinga(kmp)
- hdu 5510 Bazinga(kmp)
- HDU 5510 Bazinga 【strstr】
- HDU-5510 Bazinga
- HDU 5510 Bazinga 【kmp】
- HDU 5510 Bazinga(KMP)
- HDU 5510 Bazinga(kmp)
- hdu 5510 Bazinga(高效)
- HDU-5510 Bazinga(枚举+剪枝)
- HDU 5510 Bazinga (KMP)
- HDU 5510 Bazinga(KMP)
- HDU-5510 Bazinga(KMP)
- HDU 5510 Bazinga (KMP)
- hdu 5510 Bazinga(KMP+剪枝)
- Bazinga HDU
- Swift开发指南:使用Swift与Cocoa和Objective-C(Swift 4)
- Bootstrap学习笔记——排版
- 关于atom插件下载难的问题
- uva 1151 Buy or Build
- div标签模拟textarea
- HDU 5510 Bazinga 多种姿势
- 看电影
- windows下redis的基本命令
- 高斯消元法求解方程组
- 【Luogu3808】多项式乘法FFT
- CCF CSP 2014年9月第3题 字符串匹配(strstr函数的应用)
- 大话设计模式之访问者模式
- 第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.h
- BTRFS文件系统安装ArchLinux