Bazinga

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 3509    Accepted Submission(s): 1122

Problem Description
Ladies and gentlemen, please sit up straight.
Don't tilt your head. I'm serious.

For n

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 string Si

is another string that occurs in Si

. For example, ``ruiz" is a substring of ``ruizhang", and ``rzhang" is not a substring of ``ruizhang".

 
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 integer n (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 than 2000

letters.

 
Output
For each test case, output the largest label you get. If it does not exist, output −1

.

 
Sample Input
4
5
ab
abc
zabc
abcd
zabcd
4
you
lovinyou
aboutlovinyou
allaboutlovinyou
5
de
def
abcd
abcde
abcdef
3
a
ba
ccc
 
Sample Output
Case #1: 4
Case #2: -1
Case #3: 4
Case #4: 3
 
Source
 
Recommend
wange2014   |   We have carefully selected several similar problems for you:  5960 5959 5958 5957 5956 

  1. /*
  2. 用两个指针模拟kmp,暴力
  3. */
  4. #include<stdio.h>
  5. #include<string.h>
  6. #include<stdlib.h>
  7. #include<queue>
  8. #include<stack>
  9. #include<math.h>
  10. #include<vector>
  11. #include<map>
  12. #include<set>
  13. #include<stdlib.h>
  14. #include<cmath>
  15. #include<string>
  16. #include<algorithm>
  17. #include<iostream>
  18. #define N 505
  19. using namespace std;
  20. ///
  21. int t,n;
  22. int ne[];
  23. void getnext(char *s2)
  24. {
  25. int i=,j=-,l=strlen(s2);
  26. ne[]=-;
  27. while(i<l)
  28. {
  29. if(j==-||s2[i]==s2[j])
  30. {
  31. i++;j++;
  32. if(s2[i]==s2[j])
  33. ne[i]=ne[j];
  34. else
  35. ne[i]=j;
  36. }
  37. else
  38. j=ne[j];
  39. }
  40. }
  41. int kmp(char *s,char *s2)
  42. {
  43. memset(ne,,sizeof(ne));
  44. getnext(s2);
  45. int i=,j=,k=,len=strlen(s),l=strlen(s2);
  46. while(i<len)
  47. {
  48. if(j==-||s[i]==s2[j])
  49. i++,j++;
  50. else
  51. j=ne[j];
  52. if(j==l)
  53. k++,j=ne[j];
  54. }
  55. return k;
  56. }
  57. char s[N][]={""};
  58. bool vis[N],f;
  59. int main()
  60. {
  61. //freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin);
  62. scanf("%d",&t);
  63. int Case=;
  64. while(t--)
  65. {
  66. memset(vis,true,sizeof vis);
  67. scanf("%d",&n);
  68. for(int i=;i<=n;i++)
  69. scanf("%s",s[i]);
  70. printf("Case #%d: ",Case++);
  71. for(int i=;i<=n;i++)
  72. if(kmp(s[i],s[i-])>)
  73. vis[i-]=false;
  74. int f=;
  75. for(int i=n;i>=&&!f;i--)
  76. for(int j=;j<i&&!f;j++)
  77. if(vis[j])
  78. if(kmp(s[i],s[j])==)
  79. {
  80. printf("%d\n",i);
  81. f=true;
  82. }
  83. if(!f)
  84. puts("-1");
  85. }
  86. return ;
  87. }

2015ACM/ICPC亚洲区沈阳站 B-Bazinga的更多相关文章

  1. 2015ACM/ICPC亚洲区沈阳站 Pagodas

    Pagodas Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  2. hdu 5510 Bazinga (kmp+dfs剪枝) 2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)

    废话: 这道题很是花了我一番功夫.首先,我不会kmp算法,还专门学了一下这个算法.其次,即使会用kmp,但是如果暴力枚举的话,还是毫无疑问会爆掉.因此在dfs的基础上加上两次剪枝解决了这道题. 题意: ...

  3. 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\) ...

  4. 2015ACM/ICPC亚洲区沈阳站

    5510 Bazinga 题意:给出n个字符串,求满足条件的最大下标值或层数 条件:该字符串之前存在不是 它的子串 的字符串 求解si是不是sj的子串,可以用kmp算法之类的. strstr是黑科技, ...

  5. 2015ACM/ICPC亚洲区沈阳站 Solution

    A - Pattern String 留坑. B - Bazinga 题意:找一个最大的i,使得前i - 1个字符串中至少不是它的子串 思路:暴力找,如果有一个串已经符合条件,就不用往上更新 #inc ...

  6. 2015ACM/ICPC亚洲区沈阳站 部分题解

    链接在这:http://bak.vjudge.net/contest/132442#overview. A题,给出a,b和n,初始的集合中有a和b,每次都可以从集合中选择不同的两个,相加或者相减,得到 ...

  7. 2015ACM/ICPC亚洲区沈阳站重现赛-HDU5512-Pagodas-gcd

    n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, l ...

  8. 2015ACM/ICPC亚洲区沈阳站-重现赛 M - Meeting (特殊建边,最短路)

    题意:有\(n\)个点,\(m\)个集合,集合\(E_i\)中的点都与集合中的其它点有一条边权为\(t_i\)的边,现在问第\(1\)个点和第\(n\)个点到某个点的路径最短,输出最短路径和目标点,如 ...

  9. 2015ACM/ICPC亚洲区沈阳站-重现赛 D - Pagodas

    题意:有\(n\)个数,开始给你两个数\(a\)和\(b\),每次找一个没出现过的数\(i\),要求满足\(i=j+k\)或\(i=j-k\),当某个人没有数可以选的时候判他输,问谁赢. 题解:对于\ ...

随机推荐

  1. JAVA 反射(1)

    getDeclaredField是可以获取一个类的所有字段. getField只能获取类的public 字段.

  2. JQuery实现banner图滚动

      前  言           jQuery是一个功能强大的库,提供了开发JavaScript项目所需的所有核心函数.很多时候我们使用jQuery的原因就是因为其使用插件的功能,然而,有时候我们还是 ...

  3. Longge's problem poj2480 欧拉函数,gcd

    Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6918   Accepted: 2234 ...

  4. MySQL show status 参数详解

    状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务 ...

  5. Django进阶篇【1】

    注:本篇是Django进阶篇章,适合人群:有Django基础,关于Django基础篇,将在下一章节中补充! 首先我们一起了解下Django整个请求生命周期: Django 请求流程,生命周期: 路由部 ...

  6. 合并Spark社区代码的正确姿势

    原创文章,转载请保留出处 最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2.0也能用上, ...

  7. 数据处理:12个使得效率倍增的pandas技巧

    数据处理:12个使得效率倍增的pandas技巧 1. 背景描述 Python正迅速成为数据科学家偏爱的语言,这合情合理.它拥有作为一种编程语言广阔的生态环境以及众多优秀的科学计算库.如果你刚开始学习P ...

  8. javascript正则表达式入门

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  9. Java API 常用类(一)

    Java API 常用类 super类详解 "super"关键字代表父类对象.通过使用super关键字,可以访问父类的属性或方法,也可以在子类构造方法中调用父类的构造方法,以便初始 ...

  10. SSM框架整合项目 :投票系统

    框架: Spring SpringMVC MyBatis 题目: 投票系统 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastjson 5, aspe ...