CF126B Password

题意:

给出一个字符串 H,找一个最长的字符串 h,使得它既作为前缀出现过、又作为后缀出现过、还作为中间的子串出现过。

解法:

沿着 $ next_n $ 枚举字符串,如果这个值在 $ next_I (i < n)$ 中出现合法。

预处理出 $ next $ 数组后记录那些值在 $ next $ 当中出现过,从 $ next_n $ 开始判断,如果不合法则从i 跳到 $ next_i $ 继续判断。

CODE:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<set> using namespace std; const int N = 1e6 + 10; set<int > st;
int len,nxt[N];
char ch[N];
bool flag; void kmp() {
nxt[0] = nxt[1] = 0;
for(int i = 1 ; i <= len ; i++) {
int j = nxt[i];
while(j && ch[i] != ch[j]) j = nxt[j];
nxt[i + 1] = (ch[j] == ch[i] ? j + 1 : 0);
}
} int main() {
scanf("%s",ch+1);
len = strlen(ch + 1);
kmp();
st.clear();
for(int i = 1 ; i <= len ; i++)
st.insert(nxt[i]);
flag = 0;
int j = len;
while(nxt[j]) {
if(st.count(nxt[j])) {
flag = 1;
for(int i = 1 ; i <= nxt[j] ; i++)
printf("%c",ch[i]);
puts("");
break;
}
j = nxt[j];
}
if(!flag) puts("Just a legend");
return 0;
}

CF126B的更多相关文章

  1. cf126b(kmp好题)

    http://codeforces.com/contest/126/problem/B #include<bits/stdc++.h> using namespace std; const ...

  2. KMP CF126B Password

    Description Asterix,Obelix和他们的临时伙伴Suffix.Prefix已经最终找到了和谐寺.然而和谐寺大门紧闭,就连Obelix的运气也没好到能打开它. 不久他们发现了一个字符 ...

  3. CF126B password&&HDU 4763 Theme Section

    http://acm.hdu.edu.cn/showproblem.php?pid=4763 http://codeforces.com/problemset/problem/126/B 这两个题都是 ...

  4. CF126B Password【KMP】By cellur925

    题目传送门 其实$Chemist$在之前写了非常棒的题解! 我长话短说,补充两句. “那么当$next[n]$>$max$时显然不能将$next[n]$作为最长子串的长度”这句话其实在说,因为一 ...

  5. CF126B Password

    思路: kmp略作修改. 实现: #include <iostream> #include <cstdio> using namespace std; ; int neXt[M ...

  6. 「CF126B」Password

    题目描述 给定一个字符串 \(S\),我们规定一个字符串 \(P\) 是可行解,\(P\) 需要满足: \(P\) 是 \(S\) 的前缀 \(P\) 是 \(S\) 的后缀 \(P\) 出现在 \( ...

  7. 浅谈KMP算法——Chemist

    很久以前就学过KMP,不过一直没有深入理解只是背代码,今天总结一下KMP算法来加深印象. 一.KMP算法介绍 KMP解决的问题:给你两个字符串A和B(|A|=n,|B|=m,n>m),询问一个字 ...

  8. 2021.08.30 前缀函数和KMP

    2021.08.30 前缀函数和KMP KMP算法详解-彻底清楚了(转载+部分原创) - sofu6 - 博客园 (cnblogs.com) KMP算法next数组的一种理解思路 - 挠到头秃 - 博 ...

随机推荐

  1. 洛谷 P1140 相似基因(DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 参考资料: [1]:https://www.cnblogs.com/real-l/p/9 ...

  2. HDU1199 动态线段树 // 离散化

    附动态线段树AC代码 http://acm.hdu.edu.cn/showproblem.php?pid=1199 因为昨天做了一道动态线段树的缘故,今天遇到了这题没有限制范围的题就自然而然想到了动态 ...

  3. python3简单实现微信爬虫

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  4. 关于Jenkins部署代码权限三种方案

    关于Jenkins部署代码权限三种方案 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改Jenkins进程用户为root [root@jenkins ~]# cat /etc ...

  5. SerializeField和HideInInspector

    在Unity中,一个变量为公有类型,但是呢你不想让它显示在属性面板上,这个时候用 [HideInInspector] 这是隐藏的意思,举例: 用了[HideInInspector] 之后 就是这样用的 ...

  6. 加减乘除工具类BigDecimalUtil

    场景:为毛要用BigDecimal这个类来实现加减乘除呢?我不说其他的,你去用小数乘小数,除小数就知道.话不多说,老规矩,开箱即用. BigDecimalUtil.java package com.m ...

  7. ruby where用法

    用法1 Subject.where(").order("name") 用法2 与find方法不同的是,where方法返回的结果不是数组而是ActiveRelation,这 ...

  8. java中import机制(指定import和import *的区别)

    转自:https://www.cnblogs.com/dtts/p/4692480.html java中有两种包的导入机制,总结如下: 单类型导入(single-type-import),       ...

  9. mysql alter 用法,修改表,字段等信息

    一: 修改表信息 1.修改表名 alter table test_a rename to sys_app; 2.修改表注释 alter table sys_application comment '系 ...

  10. 04-MySQL的存储引擎和列的常用类型

    1. MySQL中的数据库分类        2. MySQL中的存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并 ...