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 1880 魔咒词典(Hash+二分)

    题目链接 哈利波特在魔法学校的必修课之一就是学习魔咒 据说魔法世界有100000种不同的魔咒 xff0c 哈利很难全部记住 xff0c 但是为了对抗强敌 xff0c 他必须在危急时刻能够调用任何一个需要的魔咒 xff0c 所以他需要你的帮助
  • hdu - 4642 - Fliping game(博弈)

    题意 xff1a Alice和Bob玩游戏 xff0c 一个N M的矩阵 xff0c 里面是1或0 xff0c 每人每次选择一个1的位置 xff0c 然后将这个位置到右下角的整个矩形元素全部取反 xff08 1变0 xff0c 0变1 xf
  • KMP算法

    一 何谓模式串匹配 模式串匹配 xff0c 就是给定一个需要处理的文本串 xff08 理论上应该很长 xff09 和一个需要在文本串中搜索的模式串 xff08 理论上长度应该远小于文本串 xff09 xff0c 查询在该文本串中 xff0c
  • HDU 1085

    题意 xff1a 有1 2 5三数 xff0c 你赋予他们各自的数量 xff0c 求他们所不能组成的最小数 分析 xff1a 首先想到暴力 xff0c 两层循环 暴力超时 xff0c 再寻他法 O n 2 include 34 cstdio
  • HDU 1085 Holding Bin-Laden Captive!(母函数)

    HDU 1085 Holding Bin Laden Captive xff08 母函数 xff09 题目地址 题意 xff1a 给你cnt1个一元硬币 xff0c cnt2个两元硬币 xff0c cnt3个五元硬币 xff0c 问不能凑出
  • 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
  • Cyclic Nacklace 【HDU - 3746】【KMP补周期】

    KMP算法的讲解 自己的领悟可随时提问 题目链接 题意 有一个字符序列 现在问你 序列后面最少补充几个元素使其恰能成为几个重复循环的序列 题目还是很良心的 让我们求字符串后面放几个字符可以使其变成周期字符串 所以还是可以想到用KMP的nex
  • hdu 1059 Dividing

    Problem acm hdu edu cn showproblem php pid 1059 题意 6 种宝石 价值分别是 1 到 6 分别给出 6 种宝石的数量 问能不能分成等价值的两堆 分析 多重背包 主要是记录下多重背包的写法 对每
  • KMP算法原理详解_论文解读版

    1 KMP算法 KMP算法是一种保证线性时间的字符串查找算法 由Knuth Morris和Pratt三位大神发明 而算法取自这三人名字的首字母 因而得名KMP算法 那发明这样的字符串查找算法又有什么用 在当时计算机本身非常昂贵 计算资源更是
  • hdu 1074 Doing Homework

    Problem acm hdu edu cn showproblem php pid 1074 题意 n 份作业 分别给出名字 完成所需时间 cost 最迟上交时间 deadline 作业每迟交一天扣一分 问最少的扣分数 Analysis
  • hdu 6127 Hard challenge

    Problem acm hdu edu cn showproblem php pid 6127 Meaning 平面上有 n 个不重合的点 任意三点不共线 任意两点所在直线不经原点 每个点有个 value 任意两个点连出的线段的 value
  • HDU2085核反应堆

    Time Limit 1000 1000 MS Java Others Memory Limit 32768 32768 K Java Others Total Submission s 22891 Accepted Submission
  • 使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发

    使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile KMM 开发 文章中探讨了 Google 提供的应用架构指南在多平台上的实现 通过共享视图模型 View Models 和共享 UI 状态 UI St
  • hdu 1827 Summer Holiday 强连通分量缩点

    题目 http acm hdu edu cn showproblem php pid 1827 题意 听说lcy帮大家预定了新马泰7日游 Wiskey真是高兴的夜不能寐啊 他想着得快点把这消息告诉大家 虽然他手上有所有人的联系方式 但是一个
  • 数据结构中Java实现KMP与BF算法对比

    public class KMPANDBF public int indexBfCount SeqString s SeqString t int begin int slen tlen i begin j 0 int count 0 sl
  • Period 【HDU - 1358】【KMP求周期】

    学习KMP算法可以参阅这篇文章 不懂的可以在线回答 题目链接 题意 我们想知道一串字符中的前缀中有多少最大周期数 例如 aaa 中 前两个 aa 最小周期长度为 a 所以周期长度为2 前三个 aaa 的最小周期也是 a 所以周期长度为3 再
  • 在 C# 中如何检测浮点数是否具有重复的小数扩展?

    我只需要知道如何检测浮点数中的重复小数扩展 Example 0 123456789123456789 该号码的重复部分为 123456789 我想用 C 实现自动化 有什么聪明的解决方案吗 有一个很好的技巧可以计算给定浮点数的有理近似值 基
  • R中的快速傅立叶变换

    我有一个数据集 其中包含动物在 12 个月内每小时的访问次数 我想使用快速傅里叶变换来检查循环模式和周期性 过去 我为此使用过 Statistica 但是 我想使用 R 来绘制频谱密度与周期的关系图 在 R 中是否有一种简单的方法可以做到这
  • Tradingview Pine-Script:如何仅绘制最后 x 个周期

    我只想绘制最后 x 个周期的指标 我怎么做 如果我可以进行时间操作 从plotStartDate中减去x period 也许我可以使用以下代码 period timeframe ismonthly or timeframe isweekly
  • jQuery 倒计时插件 - 只显示非零周期

    我正在使用 jQuery 倒计时插件编写倒计时 我只希望它显示活动 非零 周期 例如代替 剩余时间 0 天 0 小时 13 分 20 秒 它应该只显示 13 分 20 秒 我的代码是 countdown countdown expiryUr

随机推荐

  • 如何在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 第三个位置由