链接

next数组的巧妙应用  学弟出给学弟的学弟的题。。

求最长的 是前缀也是后缀同时也是中缀的串  next的数组求的就是最长的前后缀 但是却不能求得中缀

所以这里 就把尾部去掉之后再求 这样就可以保证是中缀了 先把所有既是前缀也是后缀的长度的求出来标记 然后再去掉尾部 求一下最大 既是前缀又是后缀的长度

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<vector>
 7 #include<queue>
 8 #include<vector>
 9 using namespace std;
10 #define INF 0xfffffff
11 #define N 1000010
12 char s[N];
13 int next[N];
14 int vis[N];
15 void kmp(int k)
16 {
17     int i,j=-1;
18     next[0] = -1;
19     for(i = 1 ; i < k ; i++)
20     {
21         while(j>-1&&s[i]!=s[j+1])
22         j = next[j];
23         if(s[i]==s[j+1])
24         j++;
25         next[i] = j;
26     }
27 }
28 int main()
29 {
30     //freopen("data.in","r",stdin);
31     //freopen("data1.out","w",stdout);
32     int n,i;
33     int kk=1;
34     cin>>n;
35     while(n--)
36     {
37         memset(vis,0,sizeof(vis));
38         memset(next,0,sizeof(next));
39         cin>>s;
40         int k = strlen(s);
41         kmp(k);
42         int len = next[k-1];
43         vis[len] = 1;
44         while(len!=-1)
45         {
46             vis[next[len]] = 1;
47             len = next[len];
48         }
49         int mm = 0;
50         for(i = 0 ; i < k-1 ; i++)
51         if(vis[next[i]]) mm = max(mm,next[i]+1);
52         if(mm)
53         {
54             for(i = 0 ;i < mm ; i++)
55             cout<<s[i];
56             puts("");
57         }
58         else
59         puts("Bad Luck!");
60     }
61     return 0;
62 }
63
64 /**************************************
65     Problem id    : SDUT OJ 2784
66     User name    : shang
67     Result        : Accepted
68     Take Memory    : 9240K
69     Take Time    : 180MS
70     Submit Time    : 2014-02-15 15:57:03
71 **************************************/

View Code

转载于:https://www.cnblogs.com/shangyu/p/3550620.html

sdut2784cf 126b Good Luck!(next数组)相关推荐

  1. 269道各路算法考试题集锦

    1 某编程大赛题(35道题,中等难度) 1.在实际的开发工作中,对于string的处理是最常见的编程任务,本题是要求程序对用户输入的string进行处理,具体要求如下: 1.每个单词的首字母变为大写. ...

  2. CodeForces - 126B Password(KMP中next数组)

    题目链接:点击查看 题目大意:给出一个字符串s,要求在字符串中找出一个子字符串t,要求t在s中出现了至少三次,一次在前缀,一次在后缀,一次在中间 注意一下,这里的前缀不能包括最后一个字母,后缀不能包括 ...

  3. HDU4080 Stammering Aliens(二分 + 后缀数组)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4080 Description Dr. Ellie Arroway has establish ...

  4. OC中的数组,常使用的函数,怎样将字符串写到文件中,将数组写到文件中

    现在我要解决的问题是什么,怎样将字符串写到文件中 NSString *str1=@"Hello World";//首先是定义一个字符串,也就是要操作的字符串 NSString *f ...

  5. 【LeetCode 剑指offer刷题】数组题2:57 有序数组中和为s的两个数(167 Two Sum II - Input array is sorted)...

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 57 有序数组中和为s的两个数 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是 ...

  6. 如何在C++中动态建立二维数组

    一维数组是指针,可将二维数组看作是指针的指针:每一行是一个一维数组,而列是指向行的指针.在动态创建时,先分配指向行的指针空间,再循环维每一行申请空间. #include<iostream> ...

  7. Java 基础——数组解析

    数组对于每一门编辑应语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 可以声明一个数组变量,如numbers[100 ...

  8. 【HDU - 1847】Good Luck in CET-4 Everybody! (巴什博奕,PN图或sg函数)

    题干: 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici ...

  9. java android 数组_Android开发基础之Java 数组

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...

最新文章

  1. Abaqus用户子程序umat的学习
  2. 005_CSS通配符选择器
  3. 特征工程(2):特征构建
  4. GIT 团队协作快速入门使用
  5. SpringMVC的请求-文件上传-单文件上传的代码实现1
  6. Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误
  7. Microduino中LM75温度传感器的使用
  8. 希望查询windows下安装cygwin后ssh服务无法启动的解决办法
  9. struts2中页面访问action的url问题,或许很简单
  10. 测试面试问道MySQL_Mysql精华总结,解决测试人员面试中碰到的一切Mysql问题(二)...
  11. cuda Device Management
  12. C语言学习笔记---时间函数clock()和time()
  13. HDU 1084:What Is Your Grade?
  14. transductive inference(转导推理,直推式学习)
  15. python求积分面积的几个方法
  16. 关于CAN总线的布线
  17. 【2016NOIP十连测】【test4】【状压DP】【容斥原理】巨神兵
  18. 【算法笔记】莫队算法(基础莫队,带修莫队,回滚莫队,树上莫队,二次离线莫队)
  19. WWW 2017精选论文
  20. SpringCloud学习笔记(五)服务发现Discovery

热门文章

  1. 您的光纤电缆和测试仪是否准备好用于400G以太网?
  2. Spring系列(五):@Lazy懒加载注解用法介绍
  3. 36 张图梳理 Intellij IDEA 常用设置,太全了值得收藏!
  4. 鸿蒙和安卓,到底有什么区别?
  5. 程序大佬和菜鸟的区别,太准确了!
  6. mysql 5.5 压力测试,mysql 压力测试
  7. 前端开发时间格式的转换方法_开发人员投资时间而不浪费时间的10种方法
  8. 「前端组件化」该怎么理解?
  9. go 中gcc 编译问题(gcc.exe fatal error no input files compilation terminated)
  10. IDEA svn 菜单不见了,解决方法