#10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子(内附封面)

news2024/11/8 8:33:52

题目描述

原题来自:2014 年湖北省队互测 Week2

「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约。

这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事。为了使这一次 Madoka 不再与 QB 签订契约,Homura 决定在刚到学校的第一天就解决 QB。然而,QB 也是有许多替身的(但在第八话中的剧情显示它也有可能是无限重生的),不过,意志坚定的 Homura 是不会放弃的——她决定消灭所有可能是 QB 的东西。现在,她已感受到附近的状态,并且把它转化为一个长度为 n 的字符串交给了学 OI 的你。

现在你从她的话中知道,所有形似于 A+B+A 的字串都是 QB 或它的替身,且 |A|\ge k,|B|\ge 1 (位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一子串),然后你必须尽快告诉 Homura 这个答案——QB 以及它的替身的数量。

注:对于一个字符串 S,|S| 表示 S 的长度。

输入格式

第一行一个字符串 S,第二行一个数 k。

输出格式

仅一行一个数 ans \text{ans} ans,表示 QB 以及它的替身的数量。

样例 1

输入

aaaaa
1

输出

6

样例 2

输入

abcabcabc
2

输出

8

数据范围与提示

对于全部数据, 1 ≤ ∣ S ∣ ≤ 1.5 × 1 0 4 , 1 ≤ k ≤ 100 1\le |S|\le 1.5\times 10^4,1\le k\le 100 1S1.5×104,1k100,且字符集为所有小写字母。

题目的人话翻译:

已知一个字符串,求其中形如A+B+A子串的数量 ,且要求B不为空且A的长度大于等于k

本题本蒟蒻只会 O ( n 2 ) O(n^2) On2的做法qaq

大致思路:

首先暴力枚举每个子串,对于每个字串来说,我们要使他的 n e x t [ n e x t [ i ] ] 和 n e x t next[next[i]]和next next[next[i]]next均符合题意,很显然, n e x t next next是符合的,我们需要去判断 n e x t [ n e x t [ i ] ] next[next[i]] next[next[i]]
所以要尽量去满足条件,即找到大于等于k的最小的 n e x t [ n e x t [ j ] ] next[next[j]] next[next[j]]
采用类似路径压缩来避免重复查找,找出后统计答案。

#include<bits/stdc++.h>
using namespace std;
const int N=20000;
char a[N];
int n,p[N],p2[N],kn,ans=0;
void prework(char a[]){
	int j=0;
	p[1]=0;
	int n=strlen(a+1);
	memset(p2,0,sizeof(p2));
	for(int i=1;i<n;i++){
		while(j>0&&a[i+1]!=a[j+1])j=p[j];
		if(a[i+1]==a[j+1])j++;
		p[i+1]=j;
		if(p2[j]){
			p2[i+1]=p2[j];
		}
		else{
			if(j>=kn)p2[i+1]=j;
			else p2[i+1]=0;
		}
		if(p2[i+1]!=0&&2*p2[i+1]+1<=i+1)ans++;
	}
}
int main(){
	scanf("%s",a+1);
	cin>>kn;
	n=strlen(a+1);
	for(int i=0;i<=n;i++){
		prework(a+i);
	}
	cout<<ans;
	return 0;
}

附封面

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM类加载机制-JVM(一)

我们运行一个.class文件&#xff0c;windows下的java.exe调用底层jvm.dll文件创建java虚拟机&#xff08;c实现&#xff09;。创建一个引导类加载器实例&#xff08;c实现&#xff09;C调用java代码Launcher&#xff0c;该类创建其他java类加载器。Launcher.getClassLoader()调…

【算法】最长公共子序列编辑距离(两个序列之间的DP)

文章目录 最长公共子序列&#xff08;LCS&#xff09;编辑距离&#xff08;Edit Distance&#xff09;总结相关题目练习583. 两个字符串的删除操作 https://leetcode.cn/problems/delete-operation-for-two-strings/712. 两个字符串的最小ASCII删除和 https://leetcode.cn/prob…

BWA序列比对方法丨针对较大基因组的并行计算和性能优化方式,利用多线程和负载均衡策略提高效率

BWA 序列比对 高通量测序技术日新月异发展迅猛&#xff0c;产生了数亿级大数据&#xff0c;生命的世界由DNA序列ATCG组成&#xff0c;正如计算机的世界由二进制01组成。 高通量测序的工作实质是把一本生命字典撕成碎片&#xff0c;然后每人手里拿一片&#xff0c;招募成千上万…

【洛谷】B3644 【模板】拓扑排序 / 家谱树(用邻接表存储和其他题解不一样哦)

本薅蒻通过这次学到的知识点&#xff08;本人认为好用的东西&#xff09;&#xff1a; 1&#xff1a; &#xff08;情况适用于输入的x为0时结束输入&#xff09; 2&#xff1a; 先输出“t”(就是因为这里wa了好几发&#xff0c;555555) 原本是在 if里面输出的&#xff0c;这…

mysql通过存储过程解决ERROR 1060 (42S21): Duplicate column的问题

问题描述 实际的日常开发工作中&#xff0c;经常需要对现有表的结构作出变更&#xff0c;涉及到sql相关的操作&#xff0c;基本都通过初始化脚本来完成&#xff0c;如果初始化脚本运行失败或者遇到其他问题&#xff0c;可能导致sql部分执行&#xff0c;不分失败的问题&#xf…

ModaHub ——向量数据库Milvus特征向量和预写式日志教程

目录 特征向量 什么是特征向量 特征向量的优势 应用领域 预写式日志 数据可靠性 缓冲区设置 旧日志删除 特征向量 什么是特征向量 向量是具有一定大小和方向的量&#xff0c;可以简单理解为一串数字的集合&#xff0c;就像一行多列的矩阵&#xff0c;比如&#xff1a…

领域事件驱动(三)子域

上一章对领域层的相关概念做了阐述 应用服务 应用层作为展现层与领域层的桥梁&#xff0c;是用来表达用例和用户故事的主要手段。 应用层通过应用服务接口来暴露系统的全部功能。在应用服务的实现中&#xff0c;它负责编排和转发&#xff0c;它将要实现的功能委托给一个或多…

蓝桥杯刷题-1

文章目录 1.蓝桥杯官网2.蓝桥杯题目进入界面 及 题目详情3.题目解答过程及思路4.运行结果图5.解答代码展示6.ASCII表图例 大家好&#xff0c;我是晓星航。今天为大家带来的是 蓝桥杯刷题 - 1 -单词分析 相关的讲解&#xff01;&#x1f600; 1.蓝桥杯官网 题库 - 蓝桥云课 (l…

source insight小键盘在vim中不能使用数字(数字按键变英文)

文章目录 问题描述解决办法注意&#xff1a; 问题描述 在使用source insight登录远程服务器并使用vim编辑模式时&#xff0c;出现数字键盘的0-9变成了yxwvutsrqp情况。 解决办法 注意&#xff1a; 如果你点了save as…的话&#xff0c;会让你保存untitled.key文件到你指定的路…

Redis保姆级安装(windows版)

MySQL是一种传统的关系型数据库&#xff0c;我们可以使用MySQL来很好的组织跟管理我们的数据 但是MySQL的缺点也是很明显的&#xff01;他的数据始终是存在硬盘里的&#xff0c;对于我们的用户的信息经常不修改的内容用MySQL存储的确可以&#xff0c;但是如果要快速更新或者是频…

Excel的一些操作:移动列,添加索引

移动列 在 Excel 中移动列的 5 种方法——分步教程 选中某一列&#xff0c;然后鼠标放在边缘&#xff0c;移动到你想移动到的列 添加索引 例如&#xff0c;我想添加的索引列名为“index”&#xff0c;然后选中想要添加序列的行&#xff0c;点击“填充-->录入123序列”

顶部导航菜单组件的一种做法

今天来分享一款顶部导航的菜单做法&#xff0c;可以参考一下。 它的效果是这个样子的。虽然不算太好看&#xff0c;但是也能实现具体功能 &#xff0c;剩了不少时间。 废话不多说&#xff0c;直接上代码。 以下是html代码。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT…

【Spring】Bean的作用域与生命周期详情:请简述Spring的执行流程并分析Bean的生命周期?

前言 我们都知道&#xff0c;Spring框架为开发人员提供了很多便捷&#xff0c;这使得开发人员能够更加专注于应用程序的核心业务逻辑&#xff0c;而不需要花费大量时间和精力在技术细节上。作为一个包含众多工具方法的IoC容器&#xff0c;存取JavaBean是其极为重要的一个环节。…

vue + leaflet实现图标指定方向随机旋转

效果 github地址 官方示例Demo 安装leaflet-rotatedmarker npm install leaflet-rotatedmarker -S引入leaflet.rotatedmarker import leaflet-rotatedmarker实现 this.laryerGroup this.$L.layerGroup() data.forEach(item > {this.layerGroup.addLayer(this.getMarke…

【tomcat知识点和部署】

文章目录 一、tomcat概述1.1 tomcat的介绍1.2 tomcat的特点 二、tomcat核心组件2.核心组件的介绍2.1 Web容器2.2 servlet容器2.3 JSP容器2.4 Tomcat核心组件的请求方式&#xff08;交互方式&#xff09;2.4.1 Web容器2.4.2 JSP容器2.4.3 serverlet容器2.5 Tomcat处理请求&#…

第六章 linux调试器——gdb的使用

第六章 linux调试器——gdb的使用 一、前提1、debug与release2、gdb的安装 二、常用调试指令1、开始调试2、代码显示3、断点设置4、代码执行5、信息监控6、退出调试 一、前提 1、debug与release 程序最终的发布方式分成两种&#xff0c;一种是debug模式&#xff0c;一种是rel…

华为OD机试真题 Python 实现【机器人活动区域】【2023Q1 200分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 现有一个机器人&#xff0c;可放置于 M N的网格中任意位置&#xff0c;每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时&a…

redis-单节点安装

daemonize yes port 6379 bind 0.0.0.0 requirepass 123456 save 3600 1 300 100 60 10000dir /usr/local/redis dbfilename dump.rdb logfile redis.log pidfile redis.pid##save 3600 1 300 100 60 10000 ##3600秒(一小时),至少有一个值的话,会进行存盘 ##300秒(五分钟),至少…

探索性测试: 工具和方法的综合应用

1、前言 2、工具的使用 1、测试管理工具 2、缺陷跟踪工具 3、测试自动化工具 4、探索性测试工具 5、代码覆盖率工具 6、日志分析工具 7、网络抓包工具 8、数据库查询工具 9、并发和负载测试工具 10、安全测试工具 11、API测试工具 12、数据生成工具 13、异常处理和边界测试工具…

server2012远程桌面RDP120过期后修改

运行regedit 进入 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ RCM \ GracePeriod &#xff0c;选中 GracePeriod 重启电脑Ok