Radio Transmissio bzoj-1355

Description

    给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少.

Input

第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成.

Output

输出最短的长度.
想法:结论题,输出len-next[len]即可。证明是容易的:

    我们假设红色对角线字符子串是我们想要得到的字符串长度。蓝线是题目字符串截至位置。绿色字符串是除去答案字符串的长度。那么我们如何求出答案长度呢?显然,我们用next求出最长前缀后缀,然后相减即可。题目中的最长前缀后缀是上面扩出的两个字符串

    最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s[1001000];
int next[1001000];
int len;
void GetNext()
{int j=0,k=-1;next[0]=-1;while(j<len){if(k==-1||s[j]==s[k]){k++;j++;next[j]=k;}else k=next[k];}
}
int main()
{scanf("%d",&len);scanf("%s",s);GetNext();printf("%d\n",len-next[len]);
}

    小结:KMP的精髓在于数组的灵活应用,而不是KMP本身

转载于:https://www.cnblogs.com/ShuraK/p/8626670.html

[bzoj1355][Baltic2009]Radio Transmission_KMP相关推荐

  1. [BZOJ1355][Baltic2009]Radio Transmission

    [BZOJ1355][Baltic2009]Radio Transmission 试题描述 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多 ...

  2. BZOJ1355: [Baltic2009]Radio Transmission

    题目大意:给出一个字符串,已知它是一个字符串S不断反复后构成的无限长的字符串的一个子串,求S的最短长度是多少. 思路:利用KMP算法,答案就是n-next[n].证明例如以下: 图太渣了... 另一种 ...

  3. [Baltic2009]Radio Transmission

    bzoj 1355: [Baltic2009]Radio Transmission http://www.lydsy.com/JudgeOnline/problem.php?id=1355 Time ...

  4. 1355: [Baltic2009]Radio Transmission

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 958  Solved: 659 [Submit][Status][Discuss] Descripti ...

  5. bzoj1355【Baltic2009】Radio Transmission

    1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec   Memory Limit: 64 MB Submit: 649   Solved:  ...

  6. 基础省选+NOI-第6部分 字符串

    1.Kmp KMP算法 KMP算法_哔哩哔哩_bilibili KMP算法计算next函数值(教材版,超简单!) KMP算法计算next函数值(教材版,超简单!)_哔哩哔哩_bilibili KMP算 ...

  7. linux升级openssl需要先卸载吗,linux下安装/升级openssl

    (2810)  (1) 安装环境: 操作系统:CentOs7 OpenSSL Version:openssl-1.0.2j.tar.gz 安装: 目前版本最新的SSL地址为 备注:进入http://w ...

  8. Loj一本通刷题记录

    夏令营回来后就不知道怎么回事,状态一直不好== 为了让自己不要太颓废,开个坑在noip前把一本通的好题都刷一遍. 如果想要noip拿省一的话,就要开始好好努力了.加油! 为了节省时间,一些比较简单的东 ...

  9. CSS3重新定义input中呆若木鸡的默认复选框CheckBox和单选框Radio样式

    <!DOCTYPE html> <html> <head><meta charset="UTF-8"><style>/* ...

最新文章

  1. 区分什么是Apache、Tomcat,之间有什么关系?
  2. linux六种进程状态,Linux操作系统中进程的七种状态
  3. Http中涉及到的知识点总结
  4. java线程池拒绝策略_Java核心知识 多线程并发 线程池原理(二十三)
  5. matlab中if语句的用法_if语句的基本用法
  6. zipline-benchmarks.py文件改写
  7. c++类型形参的实参的受限转换
  8. 邵阳市工业学校计算机29班,邵阳市南门口大祥区沙子坡文明路11号计算机学校...
  9. 如何去除计算机的访问限制,访问限制达成,教你如何禁止别人访问你电脑的C盘...
  10. 【线性代数公开课MIT Linear Algebra】 第六课 AX=b与列空间、零空间
  11. Aspectj切入点语法定义
  12. 安卓用targetSdk来兼容各个版本
  13. 推荐系统中传统模型——LightGBM + FFM融合
  14. android 移除泛型中元素_Android 代码混淆 混淆方案
  15. cenos 安装 Docker
  16. 定时任务cron表达式工具
  17. python进行回归方程显著性检验
  18. 19寸宽屏液晶显示器的设置 有效保护视力
  19. 教育行业网络安全等级保护法律法规参考
  20. 利用BSCScan获取账户交易记录

热门文章

  1. bzoj1150: [CTSC2007]数据备份Backup--贪心+优先队列维护堆
  2. iOS8上本地通知接收不到的问题
  3. 约瑟夫问题的几种实现
  4. TextBox只输入数字和event.keyCode的键码值
  5. 从0开始架构一个IOS程序—— 02 — 设置启动图标与启动页面
  6. UiAutomator控件获取
  7. vs2010中自动缩进模式由tab改为space
  8. js 下的 split
  9. 如何pspice模型转成saber模型
  10. [Vue.js] 路由 -- 前端路由