首页 > 其他分享 >洛谷 P4391. [BOI2009] Radio Transmission 无线传输

洛谷 P4391. [BOI2009] Radio Transmission 无线传输

时间:2023-09-20 22:26:06浏览次数:33  
标签:洛谷 Transmission 样例 int BOI2009 kmp 字符串 include

[BOI2009] Radio Transmission 无线传输

题目描述

给你一个字符串 $s_1$,它是由某个字符串 $s_2$ 不断自我连接形成的(保证至少重复 $2$ 次)。但是字符串 $s_2$ 是不确定的,现在只想知道它的最短长度是多少。

输入格式

第一行一个整数 $L$,表示给出字符串的长度。

第二行给出字符串 $s_1$ 的一个子串,全由小写字母组成。

输出格式

仅一行,表示 $s_2$ 的最短长度。

样例 #1

样例输入 #1

8
cabcabca

样例输出 #1

3

提示

样例输入输出 1 解释

对于样例,我们可以利用 $\texttt{abc}$ 不断自我连接得到 $\texttt{abcabcabcabc}$,读入的 $\texttt{cabcabca}$,是它的子串。

规模与约定

对于全部的测试点,保证 $1 < L \le 10^6$。


这道题真是一道 kmp 的好题,做完之后 kmp 完全懂了。

首先要知道 next 数组是干什么用的。 $next_i$ 的意思是在 $s_1,s_2,...,s_{i-1}$ 这几个字符中,与 $s_i$ 相等的字符的下标位置

例如样例 kmp 初始化后

1 2 3 4 5 6 7 8
c a b c a b c a
0 0 0 1 2 3 4 5

看完这个表后,那么最终结果为 n-nxt[n]

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1e6 + 10;
char s[N];
int n, nxt[N];

int main()
{
	cin >> n >> s + 1;
	
	for (int i = 2, j = 0; i <= n; ++ i)
	{
		while (j && s[i] != s[j + 1]) j = nxt[j];
		if (s[i] == s[j + 1]) ++ j;
		nxt[i] = j;
	}
	cout << n - nxt[n];
	return 0;	
} 

标签:洛谷,Transmission,样例,int,BOI2009,kmp,字符串,include
From: https://www.cnblogs.com/BottomchouFENG/p/17718582.html

相关文章

  • 洛谷 P3719. [AHOI2017初中组] rexp
    [AHOI2017初中组]rexp题目背景为了解决形形色色的字符串匹配问题,正则表达式是一个强有力的工具。正则表达式通过定义一套符号体系,能够表示出需要查找的字符串所具有的性质。如a|aa能匹配a或aa,(a|b)c能匹配ac或bc。题目描述完整的正则表达式过于复杂,在这里我们只考虑......
  • 洛谷 P1469. 找筷子
    找筷子题目描述经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题:筷子!CX小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子......
  • 洛谷 P1143. 进制转换
    进制转换题目描述请你编一程序实现两种不同进制之间的数据转换。输入格式共三行,第一行是一个正整数,表示需要转换的数的进制$n\(2\len\le16)$,第二行是一个$n$进制数,若$n>10$则用大写字母$\verb!A!\sim\verb!F!$表示数码$10\sim15$,并且该$n$进制数对应的十进制的......
  • 洛谷 P1862 输油管道问题
    洛谷\(P1862\)输油管道问题如果只有一口井,那么显然是越近越好。如果有两口井,那么显然是有以下三种情况:两口井都在主管道北边,那么这个时候的两个连接管道的长度和肯定大于两口井的\(Y\)坐标之差。两口井都在主管道南边,和情况1是一样的两口井,一个在主管道南边,一个在主......
  • 洛谷 P1889 士兵站队
    洛谷\(P1889\)士兵站队问题简述这道题我们可以换另一种思路去看待它,就容易理解了:在一个平面上,把\(n\)个点排列在一条与\(x\)轴平行的直线的整点上,且相邻两点的距离为\(1\)。求一种排列方案,使得这\(n\)个点到目标位置的曼哈顿距离和最小。解法综述由于是求曼哈顿......
  • 洛谷:manacher
    【模板】manacher算法题目描述给出一个只由小写英文字符\(\texttta,\textttb,\textttc,\ldots\texttty,\textttz\)组成的字符串\(S\),求\(S\)中最长回文串的长度。字符串长度为\(n\)。输入格式一行小写英文字符\(\texttta,\textttb,\textttc,\cdots,\textt......
  • 洛谷P4316 绿豆蛙的归宿(期望dp)
    原题链接:https://www.luogu.com.cn/problem/P4316这题是经典的概率dp题,通常看到的题解都是逆推的做法,实际上理解了题目的含义后发现逆推其实是正推的一种特殊情况而已正推做法:定义dp[i]表示从1~i的路径长度的期望,那么dp[1]=0,答案就是dp[n]状态转移公式://u->vdp[v]=(d......
  • 洛谷题解 | P1046 陶陶摘苹果
    ​目录题目描述输入格式输出格式输入输出样例说明/提示题目思路AC代码题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现......
  • 洛谷P5707 【深基2.例12】上学迟到
    题目描述学校和yyy的家之间的距离为 ss 米,而yyy以 vv 米每分钟的速度匀速走向学校。在上学的路上,yyy还要额外花费 1010 分钟的时间进行垃圾分类。学校要求必须在上午 \textrm{8:00}8:00 到达,请计算在不迟到的前提下,yyy最晚能什么时候出门。由于路途遥远,yyy可......
  • 洛谷 P9518 queue
    一眼模拟。需要维护的东西可以根据操作求得:start:正在玩游戏的\(1\)或\(2\)个人;arrive:当前在排队但没玩游戏的队列、每个人是否在排队、游玩;leave:每个人是否在排队、游玩。如何维护正在玩游戏的人:我们使用\(p_1\)、\(p_2\)两变量存储,优先保证\(p_1\)有值,当\(p_1......