CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)

简介: CF1029A Many Equal Substrings(kmp!!!!最通俗易懂的文章模板)

题目描述



You are given a string tt consisting of nn lowercase Latin letters and an integer number kk .


Let's define a substring of some string ss with indices from ll to rr as s[l \dots r]s[l…r] .


Your task is to construct such string ss of minimum possible length that there are exactly kk positions ii such that s[i \dots i + n - 1] = ts[i…i+n−1]=t . In other words, your task is to construct such string ss of minimum possible length that there are exactly kk substrings of ss equal to tt .


It is guaranteed that the answer is always unique.


输入格式



The first line of the input contains two integers nn and kk ( 1 \le n, k \le 501≤n,k≤50 ) — the length of the string tt and the number of substrings.


The second line of the input contains the string tt consisting of exactly nn lowercase Latin letters.


输出格式



Print such string ss of minimum possible length that there are exactly kk substrings of ss equal to tt .


It is guaranteed that the answer is always unique.


题意翻译



题目描述:


你有一个字符串t,它由n个字母组成。


定义一个字符串s的子串为s[l...r],表示从位置l到r构成的一个新的串。


你的目标是构造一个字符串s,使得它的可能长度最小,要求s中存在k个位置i,可以找到k个以i为出发点的子串t。


输入: 第一行输入两个整数n和k,表示t的长度和需要k个子串


第二行输入字符串t


输出:

输出满足条件的长度最小的s。题目保证答案唯一。


输入输出样例


输入  

3 4

aba


输出  

ababababa


输入

3 2

cat


输出

catcat


我们这个题就是找前缀和后缀最大的公共串,然后打印出来,我在代码里面写的很清晰对于kmp模板解析,如果这篇文章点赞量可以的话,我会考虑出一篇kmp算法的精确解析。


#include<bits/stdc++.h>
using namespace std;
int n, k;
char a[100];
int ne[100];
int main()
{
  cin >> n >> k;
  cin >> a + 1;
  for (int i = 2, j = 0;i <= n;i++)
  {
    while (a[j + 1] != a[i] && j)  //j不为0,和这里的意思就是如果 
     j = ne[j];//这里的意思就是跳到 
    if (a[j + 1] == a[i])  
       j++;
    ne[i] = j;//next数组对应的i所在的值。 
  }
  for (int i = 1;i <= n;i++)
  cout << a[i];//输入字符串 因为这里有一个了所以要减1 
  int ans = k - 1;//接几个 
  while (ans--)
    cout << a+1+ne[n];//后面的字符串 //只是最后要最大相同子串直接,看能不能直接接在屁股后面; 
}
相关文章
|
网络协议 关系型数据库 Shell
gitlab-设置邮件SMTP以及GitLab收不到邮件的问题
gitlab-设置邮件SMTP以及GitLab收不到邮件的问题
1361 1
|
消息中间件 安全 Dubbo
Log4j安全漏洞前车之鉴,呕心整理工作中常用开源组件避坑版本
Log4j安全漏洞前车之鉴,呕心整理工作中常用开源组件避坑版本
1049 0
|
存储 虚拟化 Docker
windows系统安装docker(Hyper-V方式)
windows系统安装docker(Hyper-V方式)
2078 2
|
存储 机器人 网络架构
这是我写的智慧家庭系统设计方案
本系统由服务器、手机APP和智慧家庭系统组成。服务器负责账户管理、数据存储与指令转发;智慧家庭设备通过Wi-Fi、热点或6G联网,支持用户自主配网与云端鉴权绑定,实现灵活部署。系统涵盖安防、健康、办公、娱乐、厨房、机器人等十余类智能设备,支持语音、手机APP、脑机接口(含心灵感应与幻觉式UI)等多种交互方式,专业用户还可通过命令行控制。操作系统分内地版(Alicloud Smart Home 2.0)与海外版(Google Smart Home),适配不同终端及地区需求,构建全场景智慧生活生态。(239字)
|
11月前
|
Linux
CentOS系统中rpm包与源码包的主要区别
总的来说,RPM包和源码包各有优缺点,选择哪种包主要取决于你的需求和技术水平。希望这个答案能帮助你更好地理解RPM包和源码包的区别。
369 27
|
存储 Linux 调度
协程(coroutine)的原理和使用
协程(coroutine)的原理和使用
|
存储 人工智能 自然语言处理
|
机器学习/深度学习 存储 自然语言处理
大语言模型参数真的必须要万亿以上吗?
本文探讨了大语言模型(LLMs)的发展及其在自然语言处理领域的应用。随着模型规模的不断增大,文章分析了参数规模与性能之间的关系,并展示了不同规模模型的优势与挑战。此外,文中还提供了代码示例,介绍了参数设置的方法。未来研究方向包括模型压缩和多模态学习,以进一步优化模型性能。总之,选择合适的模型规模对于平衡性能和效率至关重要。
|
运维 Ubuntu JavaScript
【Linux】Linux命令快速学习神器tldr、cheat介绍和使用(一)
【Linux】Linux命令快速学习神器tldr、cheat介绍和使用
908 0
【Linux】Linux命令快速学习神器tldr、cheat介绍和使用(一)
|
人工智能 文字识别 自然语言处理
又要起飞,浏览器居然都可以本地 OCR 啦
又要起飞,浏览器居然都可以本地 OCR 啦
457 0

热门文章

最新文章