Good Luck!

Time Limit: 1000MS Memory limit: 65536K

题目描述

我们都知道,前缀就是一个单词的前几个字母(长度小于单词长度);后缀就是一个单词的后几个字母(长度小于单词长度)。例如:Hello,{H,He,Hel,Hell}都是Hello的前缀,{ello,llo,lo,o}都是Hello的后缀。现在,给你一个字符串String,你的任务是找出一个字串s,s既是String的前缀,又是String的后缀,并且s也出现在String的中间部分(既不是前缀,也不是后缀),s的长度越长越好。

输入

输入一个N,接下来N行,每行一个字符串String,String长度len( 1 <= len <= 1000000)。

输出

输出只有一行,如果有符合条件的s,输出长度最长的s,如果没有,输出“Bad Luck!”(不含引号)。

示例输入

3
abcabcabcabcabc
papapapap
aaabaaaabab

示例输出

abcabcabc
papap
Bad Luck!

提示

KMP的题目,首先判断next[l],如果它是0的话 就没有相同前缀与后缀,如果不为0  那么现在next数组里面匹配,如果可以找到与next[l] 相同的数,即证明有中间的与前缀相同,输出。  如果没有 判断next[ next[l] ] ,判断原本的前缀有没有相同的,如果有,减小前缀,可以找到结果

来源

GLSilence

示例程序

#include <stdio.h>
#include <string.h>
char str[1000100] ;
int next[1000100] ;
void getnext()
{int j = 0 , k = -1 , l  = strlen(str);next[0] = -1 ;while(j <= l ){if(k==-1 || str[j] == str[k]){j++ ;k++;next[j] = k;}elsek = next[k] ;}/* for(int i=0;i<=l;i++)printf("%d ",next[i]);printf("\n");*/
}
int main()
{//freopen("data1.in","r",stdin);int i , n , l , j , flag ;scanf("%d", &n);for(i = 0 ; i < n ; i++){flag = 0 ;scanf("%s", str);l = strlen(str);getnext();for(j = 0 ; j <= l ; j++)printf("*%d %d", j , next[j]);printf("\n");if(next[l]==0||next[l]==-1){printf("Bad Luck!\n");continue;}for(i = 1 ; i < l ; i++)if(next[i]==next[l]){flag = 1;break;}if(flag){str[ next[l] ] = '\0' ;printf("%s\n", str);}else if(next[ next[l] ]>0){str[next[next[l] ]] = '\0';printf("%s\n", str);}elseprintf("Bad Luck!\n");}return 0;
}

寒假训练--训练赛2--Good Luck!相关推荐

  1. 1.9UPC寒假个人训练第一场

    1.9UPC寒假个人训练第一场 问题 A: 数列 问题 B: 烦恼 问题 C: 停车计费 问题 D: 小区评比 问题 E: 贪婪的国王 问题 F: 等边三角形 问题 G: 甜蜜的烦恼 问题 H: 冰壶 ...

  2. 1.24UPC寒假个人训练第12场

    1.24UPC寒假个人训练第12场(H L M还没补) 问题 A: 马拦过河卒 问题 B: 选数1 问题 C: 产生数 问题 D: 级数求和 问题 E: 幸运数字 问题 F: 对撞 问题 G: 差值求 ...

  3. 1.18upc寒假个人训练第9场

    1.18upc寒假个人训练第9场 问题 A: 6174问题 问题 B: 卖股票 问题 C: 小学生算术 问题 D: 素数II 问题 E: 统计字数 问题 F: 整数拆分 问题 G: 真假鉴定 问题 H ...

  4. [NKNY]寒假培训《NY寒假有奖欢乐赛 》总结

    说明 NY寒假有奖欢乐赛 类别 日常作业题目列表 考试规则 信息学奥赛规则 开始时间 2022/1/22 9:00:00 结束时间 2022/1/22 12:20:00 总时长 3小时 20分钟 参考 ...

  5. FCN网络训练训练——从零开始

    FCN网络训练训练--从零开始 一 数据集准备 在/fcn.berkeleyvision.org/data/下新建文件夹 sbdd trianval: http://www.eecs.berkeley ...

  6. 寒假AWD训练之初学代码审计

    寒假在家,老师组织了AWD训练赛,还是实战出真知,感觉比赛的学习效率是真的高.做个小总结. 也是刚入门,欢迎大佬斧正. 漏洞1:webshell.php 第一个漏洞是后门的,是一句话木马. <? ...

  7. 寒假算法训练1-J(分棍子,求最长棍子的数量,另外学习map的排序方法)

    有一根粗细均匀长度为 LL 的木棍,先用红颜色刻度线将它 m 等分,再用蓝色刻度线将其 n 等分(m>n),然后按所有刻度线将该木棍锯成小段,计算并输出长度最长的木棍的长度和棍数. 例如:木棍长 ...

  8. GDOI冲刺训练模拟赛第一套总结

    DAY 1 拿到题一看,第一题显然是水题,跳. 第二题看起来非常不好做,想了一会儿没思路,看了一下暴力70分可能是可以离散化后跑最短路的,跳. 第三题这种路径表示的问题一般用点分,可是之后的部分好像只 ...

  9. BUCT-2023寒假集训-进阶训练赛(九)题解

    问题 A: 3-9 So Easy 题目描述 G先生发明了一个新游戏,游戏规则如下. 首先,他有一个nxn的矩阵,所有的元素一开始都是0.然后,他继续执行一些操作:每次选择一行或者一列,并向所选行或列 ...

最新文章

  1. java自定义类加载器
  2. sql查询between and_SQL(二)——SQL简单查询
  3. shell 脚本安装Tomcat和java
  4. hdu5371(O(n)求回文子串的相关问题)
  5. SAP CRM settype的传输原理
  6. IntelliJ IDEA内部设计
  7. synchronized原理_synchronized 底层原理与内存屏障
  8. clickhouse 查询优化_查询提升200倍,ClickHouse你值得拥有!
  9. 读写文件--with open
  10. win10 设定 文件夹 联动 在 左侧窗口显示
  11. C++是一款设计非常失败的语言吗?
  12. 使用bootstrap建立响应式网页——头部导航栏
  13. 电工学习笔记————稳压二极管伏安特性
  14. 编译原理 实验一 词法分析器设计
  15. miui8 android.policy,小米MIUI8系统调教记:轻快好省 畅爽静稳
  16. Plotting data
  17. 1. 遥控器-华科尔Devo7e 改造成为支持 dsm2/dsmx 的多制式遥控器
  18. 阿里云 vps云监控插件已停止状态解决方法
  19. JavaScript不清不楚之Array.isArray
  20. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、可视化散点图并添加简单线性回归直线、添加模型拟合值数据点、添加拟合值点和实际数据点之间的线段表示残差大小、col参数自定义设置

热门文章

  1. python中如何编写代码输入多个数据并把它们放在一个列表中去_编写高质量Python代码的59个有效方法,你用过几个...
  2. 大数据学习笔记之Linux基础(一):Linux初窥
  3. 华为云人脸识别SDK踩坑日记
  4. [转]物理学家称曲率驱动或可实现10倍光速飞行
  5. 数据结构课程设计——项目2:校园导游咨询(图 Dijkstra算法寻找最短路径)
  6. B/S程序员们,让我们一起来加速IE6的死亡吧!
  7. php销售清单录入,Netsuite SuiteTalk – 通过PHP请求客户发票清单
  8. 通达OA2015-工作流表单导Excel模板后下载
  9. Margin 在WPF中的用法
  10. python编程用什么软件?Pycharm好不好?