hdu 1358 Period KMP

2023-05-16

题目大意:对于一个字符串,找由循环字符串组成的位置,并输出最多循环了几次,比如两个样例,第一个是 aaa ,所以在第二个位置由子串a循环两次得到,第三个位置由a循环3次,第二个样例aabaabaabaab,在第二个位置由a循环两次,在第六个位置由aab循环两次,在第9个位置由aab循环3次,在第12个位置由aab循环4次,注意,在第12个位置不是由aabaab循环2次,因为要求循环次数最多。

kmp可以解决循环子串问题,kmp中首先预处理出来一个p数组,p[ i ]=a表示前a个字符等于后a个字符,仔细想一下,前面a个字符往后平移i-a字符后与后面a个字符重合,令i - a = L,所以a[ 1 ] = a[ 1+ L],因为a[ 1+ L]也往后平移了,所以a[ 1+ L] = a[ 1+ 2*L]=a[ 1+ 3*L]=......,所以说如果a[ i ] 是循环子串的话i必须能整除L,循环次数为i/L,画个图会帮助理解~~

#include <stdio.h>
char a[1000020];
int p[1000020];
int main()
{
	int n,i,j,tot=1;
    while(1)
    {
		scanf("%d",&n);
		if(n==0) break;
		getchar();
		for(i=1;i<=n;i++) scanf("%c",&a[i]);
        j=0;
        p[1]=0;
        for(i=2;i<=n;i++)
        {
            while(j>0&&a[i]!=a[j+1]) j=p[j];
            if(a[i]==a[j+1])
                j++;
            p[i]=j;
        }
		printf("Test case #%d\n",tot);
        for(i=1;i<=n;i++)
			if(p[i]!=0&&i%(i-p[i])==0)
				printf("%d %d\n",i,i/(i-p[i]));
		printf("\n");
		tot++;
    }
    return 0;
}


 

 

 

转载于:https://www.cnblogs.com/vermouth/p/3710194.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hdu 1358 Period KMP 的相关文章

  • HDU 1275

    两车追及或相遇问题 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 598 Accepted Sub
  • 串的模式识别和kmp算法

    串的简单模式匹配 与 KMP 获取next数组 参考书籍 王道 数据结构 代码验证软件 xff1a vs2019 include lt iostream gt typedef char SString 暴力比对 S abcabaaabaab
  • 数据结构串的基本操作及KMP算法

    将串的基本操作C语言实现 xff0c 实现KMP算法算出NEXT函数和NEXTVAL的值 SqString h的基本内容 span class hljs keyword typedef span span class hljs keywor
  • HDU 6298(数学)

    题意是给出一个数 xff0c 找出这个数的三个因子且这三个因子的和等于这个数 xff0c 输出满足条件的乘积最大的一组因子的乘积 xff0c 如果不存在这样的因子 xff0c 就输出 1 第一次 wa 了 xff0c 因为把题目中的 x n
  • JAVA代码实现字符串匹配(一)——BF、KMP

    话不多说 xff0c 直接进入主题 xff1a 题目描述 xff1a 给定两个字符串text和pattern xff0c 请你在text字符串中找出pattern字符串出现的第一个位置 xff08 下标从0开始 xff09 xff0c 如果
  • HDU 1025最长递增子序列(二分法)

    最长递增子序列 xff08 二分 xff09 HDU1025 https www felix021 com blog read php 1587 找最长递增子序列 xff0c 以前一般用DP的方法找 xff0c 因为理解简单 xff0c 实
  • week13 作业C HDU-1176

    题目 xff1a 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只
  • HDU-4192-Guess the Numbers

    地址 xff1a http acm hdu edu cn showproblem php pid 61 4192 思路 xff1a 首先将中缀表达式转为后缀表达式 xff0c 然后将数组全排列取计算每一个排列的后缀表达式的值即可 Code
  • HDOJ/HDU 1085 母函数 Holding Bin-Laden Captive!

    Holding Bin Laden Captive Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s
  • [JAVA][2013蓝桥杯预赛 JAVA本科B组][世纪末的星期]

    标题 世纪末的星期 曾有邪教称1999年12月31日是世界末日 当然该谣言已经不攻自破 还有人称今后的某个世纪末的12月31日 如果是星期一则会 有趣的是 任何一个世纪末的年份的12月31日都不可能是星期一 于是 谣言制造商 又修改为星期日
  • KMP算法详解

    一 什么是KMP算法 KMP主要应用在字符串匹配上 KMP的主要思想是当出现字符串不匹配时 通过已知一部分之前已经匹配的内容 避免从头再去做匹配 所以KMP算法的重点就是如何记录已经匹配的信息 也就是next 数组的实现 二 什么是next
  • 剪花布条 【HDU - 2087】【KMP模板题】

    KMP教学链接 不懂的可以在线问 题意 2个字符串A B 问A中有多少个字符串B Input 输入中含有一些数据 分别是成对出现A B A和B不会超过1000个字符 如果遇见 字符 则表示测试结束 Output 输出B的个数 每个结果之间应
  • hdu 1078 FatMouse and Cheese

    Problem acm hdu edu cn showproblem php pid 1078 题意 n n 个洞 每个洞都放有 0 100 个芝士块 老鼠从 0 0 出发 每次都能横着或竖着走最多 k 格 且要走到芝士块数比当前洞多的洞里
  • hdu 4405 Aeroplane chess

    Problem acm hdu edu cn showproblem php pid 4405 vjudge net contest 151678 problem R Reference bbs csdn net topics 380193
  • 使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发

    使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile KMM 开发 文章中探讨了 Google 提供的应用架构指南在多平台上的实现 通过共享视图模型 View Models 和共享 UI 状态 UI St
  • SDUTOJ KMP简单应用 【KMP】

    KMP简单应用 Time Limit 1000MS Memory limit 65536K 题目描述 给定两个字符串string1和string2 判断string2是否为string1的子串 输入 输入包含多组数据 每组测试数据包含两行
  • SQL 中时间段的交集和合并

    我想实现类似的功能 NET 的时间段库 https www codeproject com Articles 168662 Time Period Library for NET 但是在 SQL 中 首先 我有一个包含多行的表 其中包含开始
  • Tradingview Pine-Script:如何仅绘制最后 x 个周期

    我只想绘制最后 x 个周期的指标 我怎么做 如果我可以进行时间操作 从plotStartDate中减去x period 也许我可以使用以下代码 period timeframe ismonthly or timeframe isweekly
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • PHP 查找最接近时间线期间的日期

    所以 呃 好吧 这可能会涉及到数学问题 所以希望你带上科学计算器 这是我的问题 给定初始日期 时间戳 时间段 秒 和今天的日期 时间戳 我需要找到与 period n 加上原始 初始日期一致的最近日期 到目前为止 我得到了一些运行良好的东西

随机推荐

  • 如何在CSDN博客中所贴的代码进行【代码块】显示

    笔者学习android开发有半年多了 xff0c 而CSDN也陪伴我半年有余 xff0c 在开发全国移动终端参赛项目的时候 xff0c 就在CSDN上看别人的博客 xff0c 解决问题 xff0c 下载好的代码资源研究 xff0c 可谓CS
  • Ubuntu 16.04 安装 高版本远程桌面xrdp+xorg

    Ubuntu 16 04 安装 高版本远程桌面xrdp 43 xorg Ubuntu 16 04提供的官方源里面只能安装0 6 1版本的xrdp xff0c 大概长这个样子 这个版本的远程桌面有很多问题 xff0c 首先是无法在本地电脑和远
  • 2021.04.03-2021.04.04 省选模拟 总结

    地址 Day 1 xff1a https gmoj net senior contest home 3355 Day 2 xff1a https gmoj net senior contest home 3356 总结 两天都考得不好 xf
  • Linux 文件系统扩展属性

    扩展属性 xff08 xattrs xff09 提供了一个机制用来将 键 值 对永久地关联到文件 xff0c 让现有的文件系统得以支持在原始设计中未提供的功能 扩展属性是文件系统不可知论者 xff0c 应用程序可以通过一个标准的接口来操纵他
  • linux内核模块Makefile

    方式一 xff1a 当linux内核驱动模块代码位于内核源码目录树外部时 xff0c 以helloworld模块为例 xff0c Makefile 写法如下 xff1a warning KERNELRELEASE 61 KERNELRELE
  • PHP调用C语言实现接口方法

    一 环境准备 环境 xff1a CentOS Linux release 7 3 1611 Core PHP 5 4 16 安装php 查看php版本 yum install php php devel php v 二 so 动态库封装 r
  • dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解

    xfeff xfeff dd if 61 dev zero of 61 的含义是什么 xff1f Linux 下的dd命令使用详解 转载 xff1a http blog sina com cn s blog 8b5bb24f01016y3o
  • mysql 错 Could not open JDBC Connection for transaction; nested exception is java.sql.SQLExceptio

    运行时报com mysql jdbc exceptions jdbc4 MySQLSyntaxErrorException Unknown character set 39 utf8mb4 39 导致 浏览器报Could not open
  • axios.create、拦截器、取消请求

    axios create config 根据指定配置创建一个新的 axios 也就就每个新 axios 都有自己的配置新 axios 只是没有取消请求和批量发请求的方法 其它所有语法都是一致的为什么要设计这个语法 1 需求 项目中有部分接口
  • 启明云端分享:产品应用上,怎么选型ESP-12F\ESP-12E\ESP-12S\ESP-07S这四个模块

    提示 xff1a ESP 12F ESP 12E ESP 12S ESP 07S四个模块怎么选型呢 前言 ESP 12F ESP 12E ESP 12S ESP 07S这四个模块采用的都是乐鑫ESP8266芯片封装的模块 其中ESP 12F
  • echarts图表分区域--显示不同颜色(markArea)

    项目需要这样的效果 xff0c 在y轴数值大于50的时候 xff0c 向上的区域显示不同的颜色 xff1a 查阅官方文档有一个属性markArea xff0c 是标记背景区域的 xff0c 官方是这样配置的 xff1a 因为我有多个色块 x
  • ChatGPT自我分析

    作者 xff1a chatgpt ChatGPT 是一个由 GPT 技术驱动的聊天机器人 xff0c 它能够回答各种问题 提供信息和建议 生成文本和完成其他任务 ChatGPT 是一个深度学习模型 xff0c 是人工智能技术中的一种 在本博
  • Visutal Studio2022 如何使用Github copilot

    visual studio 2019 升级最新版本的2019也并没有搜索到 xff0c 直接升级到visual studio 2022 xff0c 看发布介绍也是2022的copilot Copilot 是一款由 OpenAI 开发的基于
  • 音视频领域的经典书籍推荐

    数字视频处理基础 xff08 Digital Video Processing xff09 xff1a 作者A Murat Tekalp xff0c 讲述数字视频处理的基本概念和技术 xff0c 包括视频编码 图像分析 视频通信和多媒体系统
  • 音视频专家

    作为一名顶级的音视频专家 xff0c 需要在音视频领域拥有非常深入的技术理解和丰富的实践经验 xff0c 并且要能够在行业内产生深远的影响和贡献 以下是更详细的顶级音视频专家提升计划 xff1a 1 深入研究音视频核心技术 作为顶级音视频专
  • 2022年新兴技术趋势

    图片源自 xff1a 2022年Gartner新兴技术成熟度曲线公布最新技术趋势 Gartner中国 人工智能和机器学习技术仍处于高峰 xff0c 但已经开始进入成熟期 这表明人工智能和机器学习技术已经不再是新颖的概念 xff0c 而是逐渐
  • 白镜1-1

    2029年 xff0c 人类社会已经进入了全球化 数字化 智能化的新时代 xff0c 各国政府和企业已经开始在深海和太空等地方进行勘探和开采 同时 xff0c 在不断提升的科技水平下 xff0c 人类已经开始了向宇宙的探索和移民 在这样一个
  • Jetson查看GPU显存信息

    pip3 install jetson stats jtop 然后运行jtop命令即可 xff0c jetson xavier nx 的查看命令并不是nvidia smi xff0c 所以运行nvidia smi并没有效果 xff01 效果
  • 并不包含调试信息(未加载任何符号)

    今天调试一C 43 43 程序 xff0c 按下F5 xff0c 老是弹出一对话框显示信息 xff1a debugging information for 39 myproject exe 39 cannot be found or doe
  • hdu 1358 Period KMP

    题目大意 xff1a 对于一个字符串 xff0c 找由循环字符串组成的位置 xff0c 并输出最多循环了几次 xff0c 比如两个样例 xff0c 第一个是 aaa xff0c 所以在第二个位置由子串a循环两次得到 xff0c 第三个位置由