CodeForce[1500-2000]——1950E Nearly Shortest Repeating Substring

2024-04-21 14:04

本文主要是介绍CodeForce[1500-2000]——1950E Nearly Shortest Repeating Substring,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

codeforces刷题日记

题目大意:给你一个长度为n的字符串s,要寻找一个长度最小的字符串k,能够让字符串k进行1或多次的拼接,让拼接成的字符串和字符串s长度相等,且至多一个字母不一样。求k的最小长度。

思路:从1到n遍历k的长度i,如果i整除,就跳过,这时s被分成了n/i段,取出第一段和最后一段。如果这两段相等,那其他段必定和这两段一样(不一样的值字母允许存在一个),才符合条件。要是这两段不一样,那其他段(包括两段中的另一段)必然和两段其中一个一样。

#include<bits/stdc++.h>
using namespace std;
int n;string s;
int main(){int t;cin>>t;while(t--){cin>>n>>s;int ans=n;for(int i=1;i<=n;i++){if(n%i) continue;int cnt=0;int flag=1;string ss=s.substr(0,i);for(int j=0;j<n;j++){if(s[j]==ss[j%i]) continue;cnt++;if(cnt>1) {flag=0;break;}}if(flag){ans=min(ans,i);break;}ss=s.substr(n-i,i);cnt=0;flag=1;for(int j=0;j<n;j++){if(ss[j%i]==s[j]) continue;cnt++;if(cnt>1) {flag=0;break;}}if(flag){ans=min(ans,i);break;}}cout<<ans<<endl;} return 0;
}

这篇关于CodeForce[1500-2000]——1950E Nearly Shortest Repeating Substring的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923263

相关文章

(nyoj308)substring

Substring 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 1 描述 You are given a string input. You are to find the longest substring of input such that the reversal of the substring is also a substring of

POJ 2001 Shortest Prefixes(字典树入门)

题目: http://poj.org/problem?id=2001 题意: 找到多个字符串中,各自唯一的最短子串,例如 carte 与 carce 各自唯一的最短子串为cart与carc,即不会与其它字符串的子串重复。 思路: 字典树 解题心得: 更新关键值的时机很重要 代码: #include<stdio.h>#include<string>typedef str

C++ 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

C++ 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

MySQL中的`SUBSTRING()`和`MID()`函数:精准抽取字符串中的子串

在数据库操作中,经常需要从存储的字符串中提取出特定的部分,比如从用户全名中提取姓氏、从日期字符串中提取年份等。MySQL提供了SUBSTRING()和MID()两个函数,它们的功能几乎完全相同,都是用来从字符串中抽取子串的。本文将详细介绍这两个函数的用法、参数以及在实际场景中的应用。 一、SUBSTRING()和MID()函数的基本语法 1. SUBSTRING()函数 SUBSTRING(

mysql 的函数用法SUBSTRING_INDEX

因为数据库的数据要更新操作,内容是这样的: 这是之前的数据,现在因为需求变更,只需要横杠之前的数据,数据量少可以手动改,但是有几百条的数据,所以找到了一个方法 UPDATE product SET pro_price=SUBSTRING_INDEX(pro_price, '-', 1);  这个SUBSTRING_INDEX就是用来截取的 pro_price是要修改的字段名,然后中间

java常用算法之最长回文子串(Longest Palindromic Substring)

方法一:时间复杂度为O(n^3) public static String longestPalindrome1(String s) {int maxPalinLength = 0;String longestPalindrome = null;int length = s.length();// check all possible sub stringsfor (int i = 0; i

最短路径(Shortest Path)

单源最短路径问题 Dijkstra算法:基于递推的思想设计 未达顶点的最短路径一定是由已到达顶点的最短路径求出 所有顶点之间的最短路径,任意两个顶点之间的最短路径 Floyd算法:只是Dijkstra最短路径算法的加强,其本质还是递推

【数据分享】2000—2023年我国省市县三级逐月归一化植被指数(NDVI)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月归一化植被指数(NDVI)栅格数据(可查看之前的文章获悉详情),该数据来源于NASA定期发布的MOD13A3数据集!很多小伙伴拿到数据后反馈栅格数据不太方便使用,问我们能不能把数据处理为更方便使用的Shp和Excel格式的数据! 我们特地对数值在-0.2—1之间的NDVI栅格数据进行了处理,将2000-2023年逐月的归一化植被指数栅格分别按照我国省级行政边

【HDU】2807 The Shortest Path 最短路

传送门:【HDU】2807 The Shortest Path 题目分析:题目很简单,矩阵计算出两个城市的连通性,建边,然后每次询问求最短路回答(或者floyd预处理)。 当然暴力的代价是惨痛的,用堆优化+dij+输入优化最多800ms。 然后很好奇前面的是怎么跑的这么快的,看了别人写的题解才发现,原来他们是用了hash的方法将二维化为一维了,虽然可能会错误,但在出题人不是故意去卡的情

【HDU】1595 find the longest of the shortest 枚举+最短路

传送门:【HDU】1595 find the longest of the shortest 题目分析:首先求出一条最短路,记录下最短路上用到的边,枚举删除每一条边,求一次最短路,求完后恢复删除的边。重复这一过程直到枚举完所有的边为止。所有删除边后求得的最短路里最长的那条就是答案。 代码如下: #include <cstdio>#include <cstring>