CF937Div4E :分段比较
Nearly Shortest Repeating Substring
题面翻译
给你一个长度为 \(n\) 的字符串 \(s\) ,它由小写字母组成。求最短字符串 \(k\) 的长度,使得多个(可能是一个) \(k\) 可以连接在一起,形成一个长度与 \(s\) 相同的字符串,且最多只有一个不同的字符。
更正式地说,求最短字符串 \(k\) 的长度,使得 \(c = \underbrace{k + \cdots + k}_{x\rm\ \text{times}}\) 为某个正整数 \(x\) ,字符串 \(s\) 和 \(c\) 的长度相同,且 \(c_i \neq s_i\) 中最多有一个 \(i\) (即存在 \(0\) 或 \(1\) 这样的位置)。
题目描述
You are given a string $ s $ of length $ n $ consisting of lowercase Latin characters. Find the length of the shortest string $ k $ such that several (possibly one) copies of $ k $ can be concatenated together to form a string with the same length as $ s $ and, at most, one different character.
More formally, find the length of the shortest string $ k $ such that $ c = \underbrace{k + \cdots + k}_{x\rm\ \text{times}} $ for some positive integer $ x $ , strings $ s $ and $ c $ has the same length and $ c_i \neq s_i $ for at most one $ i $ (i.e. there exist $ 0 $ or $ 1 $ such positions).
输入格式
The first line contains a single integer $ t $ ( $ 1 \leq t \leq 10^3 $ ) — the number of test cases.
The first line of each test case contains a single integer $ n $ ( $ 1 \leq n \leq 2\cdot10^5 $ ) — the length of string $ s $ .
The second line of each test case contains the string $ s $ , consisting of lowercase Latin characters.
The sum of $ n $ over all test cases does not exceed $ 2\cdot10^5 $ .
输出格式
For each test case, print the length of the shortest string $ k $ satisfying the constraints in the statement.
样例 #1
样例输入 #1
5
4
abaa
4
abba
13
slavicgslavic
8
hshahaha
20
stormflamestornflame
样例输出 #1
1
4
13
2
10
提示
In the first test case, you can select $ k = \texttt{a} $ and $ k+k+k+k = \texttt{aaaa} $ , which only differs from $ s $ in the second position.
In the second test case, you cannot select $ k $ of length one or two. We can have $ k = \texttt{abba} $ , which is equal to $ s $ .
本题思路:
(有长度L|n时,长度为L的串才是s的子串)降低枚举频率,此时枚举最小子串长度L(有L * x = s)。
接下来考虑其,最多不匹配位置为1(当不匹配位置为2时直接弹出)
题解认为:不同的字母也可能出现在前缀中(例如, 和 =2),因此我们也要对长度为的后缀进行同样的检查。如果其中之一为真,则输出 。
不匹配字符出现的问题(可能会出现前缀中,导致枚举前缀超过限制1这个前提)所以对应的这里也要同样枚举后缀消除影响
当时思路:
乱七八糟的思路有很多,想到计数每个字符出现次数,这样重复符合要求即最终长度,但很快被否定,再次的想法是找到最大子串即符合原理(夭折)····
看完题解后:
相应的总是想将黑盒数据取出,或者知道黑盒数据是什么,忽略了数据本身就是有价值的,引申出copy模版串匹配应该也是可以的,但相较于原串比较更麻烦
CF937Div4E :分段比较的更多相关文章
- 操作系统篇-分段机制与GDT|LDT
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的. ...
- 分段二次插值——用Python进行数值计算
事实上在实际使用中,高次插值显然是很不适合的,高次插值将所有样点包涵进一个插值函数中,这是次幂高的原因.高次计算复杂,而且刚开始的一点误差会被方的很大.因此将整个区间分为若干个小区间,在每一个小区间进 ...
- iOS系列 基础篇 09 开关、滑块和分段控件
iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...
- kafka的log存储解析——topic的分区partition分段segment以及索引等
转自:http://blog.csdn.net/jewes/article/details/42970799 引言 Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相 ...
- 洛谷 P1182 数列分段Section II Label:贪心
题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列4 2 4 5 1要分成3段 将其如下分段: [4 ...
- 【UISegmentedControl】- 分段控件
一.初始化 二.常见的属性 1.segmentedControlStyle属性:设置基本的样式 2.momentary属性:设置在点击后是否恢复原样 . 3.numberOfSegments属性:只读 ...
- 【JAVA并发编程实战】9、锁分段
package cn.study.concurrency.ch11; /** * 锁分段 * @author xiaof * */ public class StripedMap { //同步策略:就 ...
- 【OS】分页和分段
在网上找到了一个比较形象的比喻 打个比方,比如说你去听课,带了一个纸质笔记本做笔记.笔记本有100张纸,课程有语文.数学.英语三门,对于这个笔记本的使用,为了便于以后复习方便,你可以有两种选择. ...
- Mysql 分段统计
今天遇到个小问题觉得挺有意思,与大家分享. 需求是这样的,对数据库中的一张表做按时间的分段统计,结果只要每个区间的数量. select YEAR(create_time) as nian,MONTH( ...
- Latex 分段函数
Latex里面分段函数的输入: \begin{equation} P_{r-j}= \begin{cases} 0&\mbox{if $r-j$ is odd}\\ ...
随机推荐
- ISO镜像做yum源
先上传一个镜像文件 centos-7-x86-1708.iso 挂载 mount -o loop /root/centos-7-x86-1708.iso /file 设置开机自动挂载 vi /etc/ ...
- TVM 安卓环境搭建部署
安装VULKAN 参考:https://blog.csdn.net/luolinll1212/article/details/113261022 在编译TVM,当config.cmake中将USE_V ...
- Django中图片不显示
很多教程没教对,导致Django中的图片不能正确的显示出来,经过多次踩坑,发现如下方法可以解决该问题. 1.setting.py中添加: STATIC_URL = '/static/' STATICF ...
- React-Native开发鸿蒙NEXT-video
React-Native开发鸿蒙NEXT-video 前几周的开发,基本把一个"只读型"社区开发的差不多了.帖子列表,详情,搜索都迁移实现了,但还差了一点------视频类型帖子的 ...
- netcore微服务Polly 实现熔断与降级机制
Polly的基本使用 Polly是一种.NET弹性和瞬态故障处理库,允许我们以非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略. Polly针对对.NET 4.0,.NET 4.5和 ...
- C++学习思维导图
C++思维导图 整个的思维导图大概的架构如下,Xmind.SVG.PDF格式的下载链接都在下面了,如有需要可自取 Xmind文件分享:https://cnblogs-img.oss-cn-hangzh ...
- JDBC入门详解
JDBC概念 JDBC就是Java操作关系型数据库的一套API,其中真正的实现类由不同的数据库驱动(也就是jar包)实现. JDBC连接数据库步骤 创建项目,导入jar包 注册驱动,即告诉Java代码 ...
- php链式调用
我们经常在项目中会写到 Mode::find()->where()->orderBy()->limit(); 链式调用,那么它是怎么实现的呢? 昨天看韩天峰大佬的视频,学到了 关键点 ...
- Java生成二维码带LOGO
前言 Java后端生成二维码 参考文章 使用Java生成二维码图片(亲测) Reborn_YY使用Java生成二维码图片 图标素材库 Java后台生成图片,前台实现图片下载 jar 保持和spring ...
- Java 开发者无痛迁移到 Cursor 开启AI编程新生涯
习惯了IntelliJ IDEA的Java开发者,想尝试Cursor.Windsurf或Trae这类新兴的AI IDE,却担心迁移成本? 本文分享我的实战经验,帮助你高效切换开发环境,保留核心效率.效 ...