[Baltic2009]Radio Transmission题解
来源:互联网 发布:hadoop大数据分析 编辑:程序博客网 时间:2024/06/05 16:29
[Baltic2009]Radio Transmission题解
题目
题目描述
给你一个字符串,它是由某个字符串不断自我连接形成的。 但是这个字符串是不确定的,现在只想知道它的最短长度是多少。
输入
第一行给出字符串的长度,1 < L ≤ 1,000,000. 第二行给出一个字符串,全由小写字母组成。
输出
输出最短的长度。
思考
之前对KMP一直只是当作一个快速的字符串匹配算法。其实比赛中一般用的还不是用它做字符串匹配,而是利用next数组的特殊性质搞些事情。
所以话说这道题还是相当裸的KMP啊。当然跟字符串匹配没关系,我们只需要求一下next数组就好了。当最后一位失配时必然跳转到最小循环节处,所以答案就是 n - nxt[n] 了。
话说 n - nxt[n] 好像是KMP的题中经常拿来搞的东西。于是记录一下。
代码
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;char des[1000010];int nxt[1000010];int len_d, len_s;void getNext(){ int i, j; i = 0; j = -1; nxt[0] = -1; while (i < len_d) { if (j == -1 || des[i] == des[j]) { i ++; j ++; nxt[i] = j; } else { j = nxt[j]; } }}int main(){ scanf("%d", &len_d); scanf("%s", des); getNext(); printf("%d", len_d - nxt[len_d]); return 0;}
阅读全文
0 0
- [Baltic2009]Radio Transmission题解
- BZOJ1355: [Baltic2009]Radio Transmission
- [BZOJ1355] [Baltic2009]Radio Transmission
- 1355: [Baltic2009]Radio Transmission
- bzoj1355【Baltic2009】Radio Transmission
- 1355: [Baltic2009]Radio Transmission
- bzoj1355: [Baltic2009]Radio Transmission
- BZOJ1355: [Baltic2009]Radio Transmission
- bzoj1355: [Baltic2009]Radio Transmission
- 【bzoj1355】 [Baltic2009]Radio Transmission
- 【bzoj1355】【Baltic2009】【Radio Transmission】【kmp】
- 【bzoj1355】[Baltic2009]Radio Transmission KMP
- 1355: [Baltic2009]Radio Transmission|Kmp
- 【BZOJ 1355】 [Baltic2009]Radio Transmission
- bzoj 1355: [Baltic2009]Radio Transmission
- BZOJ 1355 [Baltic2009]Radio Transmission
- 【Baltic2009】bzoj 1355 Radio Transmission
- BZOJ 1355 [Baltic2009]Radio Transmission
- centos7 搭建git2.11.0和gitosis服务
- 第九天
- 使用命令行编译打包运行自己的MapReduce程序 hadoop2.7.3
- Unity3D
- JZOJ1203. 染色的立方体(2017.8B组)
- [Baltic2009]Radio Transmission题解
- 合并两个排序链表
- 希尔排序
- 用阿里云四步搭建你的专属网站
- Android消息处理机制(handler和message)-1
- 线索二叉树
- 嵌入式linux开机应用程序自启动
- Poj 2689 Prime Distance【素数区间筛】
- (HDU4501) 三维01背包 + 惯性写法导致的错误