HDU 2087 剪花布条(kmp)

【HDU 2087】 剪花布条 KMP 剪花布条 Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 32629Accepted Submission(s): 19911 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面... 阅读详情
Problem Description
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?
 

Input
输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。
 

Output
输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。
 

Sample Input
  
abcde a3 aaaaaa aa #
 

Sample Output
  
0 3
 

Author
qianneng
 

Source
 

这个题和普通的kmp有一点点不同,看下面注释



#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
using namespace std;
#define N 10005

char a[N],b[N];
int ans,next[N];
int lena,lenb;

void getfail()
{
	int i=0,j=-1;
	next[0]=-1;
	while(i<lenb)
	{
		if(j==-1||b[i]==b[j])
		{
			i++;
			j++;
			next[i]=j;
		}
		else
			j=next[j];
	}
}


void kmp()
{
	int i=0,j=0;
	ans=0;
	while(i<lena)
	{
		 if(j==-1||a[i]==b[j])
		 {
		 	i++;
		 	j++;
		 }
		 else
			j=next[j];

		 if(j==lenb)
		 {
		 	ans++;
		 	 j=0;  //由于减下来,所以j=0;
		 	//j=next[j];     这是求周期串的时候
		 }
	}
}

int main()
{
	int i,j;
	while(scanf("%s",a))
	{
		if(a[0]=='#') break;

		scanf("%s",b);
		lena=strlen(a);
		lenb=strlen(b);

		getfail();
		kmp();
		printf("%d\n",ans);
	}
    return 0;
}


【HDU】2087 剪花布条 (KMP算法的应用) 可以参考:从头彻尾彻底理解KMP 可以用朴素的模式匹配算法,也可以使用KMP算法,KMP算法所用的时间较短 普通版 #include <iostream> #include <string> using namespace std; int main () { string s1,s2; while(cin >> s1) { if(s1==... 阅读详情

相关推荐

hdu2087剪花布条(KMP)

题目链接:剪花布条 考查知识:KMP 题意描述:花布条字符串中能切割出多少小饰条字符串 思路简析:KMP板子题呦(❁´◡‘❁)(❁´◡`❁)(❁´◡‘❁) 具体代码:#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e7; int Next[N]; void getNext(string s,int Next[]){ Next[0]=-1; int i=0,j=-1;//后缀指针i.

勿忘勿失的博客 626

HDU 2087 剪花布条(字符串匹配,KMP)

HDU 2087 剪花布条(字符串匹配,KMP) Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条...

dipinzhu4111的博客 172

无人机基本组成部件

无人机基本组成部件

qq_37410522的博客 1万+

hdu 2087 剪花布条 kmp小水

剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3083    Accepted Submission(s): 2079 Problem Description 一块花布条,里面有些图案,另有一块直接可用

hnust_xiehonghao的专栏 5606

局域网tcp通信实验

IPv4 地址 . . . . . . . . . . . . : 192.168.92.79。IPv4 地址 . . . . . . . . . . . . : 192.168.92.59。子网掩码 . . . . . . . . . . . . : 255.255.255.0。子网掩码 . . . . . . . . . . . . : 255.255.255.0。使用这篇文章的小工具。

weixin_51883798的博客 432

Linux 命令之 locale -- 设置和显示程序运行的语言环境

文章目录命令介绍locale 设置规则使用详解(一)查看当前 locale 设置(二)查看当前系统所有可用 locale(三)设置系统的 locale 命令介绍 locale 是 Linux 系统中多语言环境的设置接口,在 Linux 中,使用 locale 命令来设置和显示程序运行的语言环境,locale 会根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境。 通过 locale 来设置程序运行的不同语言环境,locale 由ANSI C提供支持。locale 的

liaowenxiong的博客 3万+

HDU 2087:剪花布条(KMP算法)

输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果之间应换行。下面就是大家喜欢的AC代码;

a10b12c13d14e15的博客 375

SAP FICO 银企直联实战:从配置到异常处理的全流程解析

本文详细解析了SAP FICO银企直联的实战配置与异常处理全流程,涵盖银行主数据搭建、支付类配置、银行接口适配等关键步骤。通过实际案例分享,帮助用户掌握实时付款、余额监控和自动对账等核心功能,提升企业财务效率与安全性。特别针对常见问题如凭证重复付款、前置机UUID冲突等提供了实用解决方案。

weixin_29215815的博客 663

hdu 2087 剪花布条 KMP

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 分析:字符串匹配次数统计,注意题目的应用情景, 由于是剪布条,所以匹配之后要清零。 /*剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S...

weixin_30569153的博客 181

全志 T527_Android13 编译 [ 避坑必看 ]

Swap 概念: Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。当输入编译命令make -j16 的时候,会有如下提示,这是官方建议通过减少编译线程来解决编译时消耗内存过大的问题。Android 13 系统的编译流程,编译一共分为两部分:内核编译与 Android 编译。

公众号:嵌入式分享 2111

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1135

HDU - 2087 剪花布条 KMP查找子串,不能有重叠

HDU - 2087 剪花布条 思路: 在查找时每当匹配成功,将 j=0 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; using namespace std; const int maxn=1000010; int nxt[maxn]; char a[maxn],b[maxn]; int ...

没有梦想何以远行 178

无人飞行器和车辆的协同配送物资问题——附带MATLAB代码

通过建立城市地图、生成物资点和配送任务、路径规划、协同调度以及仿真和评估等步骤,可以有效地解决物资配送的优化问题。通过建立城市地图、生成物资点和配送任务、路径规划、协同调度以及仿真和评估等步骤,可以有效地解决物资配送的优化问题。我们的目标是最小化物资配送的总时间,同时确保每个物资点都被正确配送的无人飞行器或车辆所访问。我们的目标是最小化物资配送的总时间,同时确保每个物资点都被正确配送的无人飞行器或车辆所访问。我们首先需要建立一个城市地图,包括物资点、无人飞行器的起始点和车辆的起始点。

CyberJolt的博客 949

HDU 2087剪花布条(KMP)

每组数据包含两个字符串 s,t,分别是成对出现的花布条和小饰条,其布条都是用可见 ASCII 字符表示的,可见的 ASCII 字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过 1000 个字符长。一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出 0,每个结果占一行。

张辰宇的博客 272

CodeBuddy Code CLI 常用工作流:17个实战场景全解析

CodeBuddy Code CLI 17个实战场景解析 本文详细介绍了CodeBuddy Code CLI在17个开发场景中的高效应用,包括: 快速理解新代码库 高效修复Bug 安全重构代码 使用子代理系统处理专业任务 Plan Mode安全分析 自动化测试处理 创建合并请求 文档生成与维护 图片内容分析 文件目录快速引用 每个场景都配有具体命令示例和最佳实践,帮助开发者提升工作效率。

简简单单Onlinezuozuo 1078

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

hdu 2087 剪花布条 KMP水题。。

Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。 Output 输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出

Lionel 1613

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 2087剪花布条 (kmp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15563    Accepted Submission(

hkh746392783的专栏 292

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

hdu 1686(Oulipo) KMP基础题 / hdu 2087(剪花布条)KMP基本运用

题目太长自己叙述吧! 原题链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=1686 输入:t代表测试实例 第一行:模式串 第二行:匹配串 问模式串在匹配串中出现的次数。 3 BAPC BAPC AZA AZAZAZA VERDI AVERDXIVYERDIAN 上面的三个实例的输出分别为:1 3 0 KMP算...

weixin_30569153的博客 190

HDU2087 剪花布条 [KMP]

剪花布条 Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64uDescription 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都

C'est la vie. 422

HDU 2087 - 剪花布条(KMP)

题目链接:HDU - 2087 剪花布条 Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) ...

Ripcord丶的博客 348

hdu 2087 剪花布条 - KMP

    Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)    Total Submission(s): 15406Accepted Submission(s): 9766 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小...

adx33526的博客 120

hdu 2087 剪花布条(KMP)

目录问题分析代码 问题 hdu 2087 剪花布条 - https://acm.hdu.edu.cn/showproblem.php?pid=2087 分析 模式串P的长度为 iii 的前缀的最长公共前后缀 f[i]f[i]f[i] 下标从0开始,长度 iii 前缀的下一个字符下标为 iii 代码 /* hdu 2087 剪花布条 */ #include<bits/stdc++.h> using namespace std; const int MXN = 10010; int f[MXN]

jpphy0的博客 176

KMP-剪花布条-HDU - 2087

KMP-剪花布条-HDU - 2087 题目: 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#...

njuptACMcxk的博客 240

HDU 2087 剪花布条 KMP

题意:给一串字符串,和一串模式串,求出原串可以剪出多少个模式串 思路:KMP匹配成功后返回模式串头继续匹配原串下一个字符 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<vector> #include<queue> ...

qq_42397248的博客 183

kuangbin专题十六 KMP&&扩展KMP HDU2087 剪花布条

kuangbin专题十六 KMP&amp;&amp;扩展KMP HDU2087 剪花布条 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见...

ACMerszl的博客 133

算法模板之KMP(HDU 2087 剪花布条)

模板总结归纳:vector &lt;int&gt; kmp(string pattern, string text){ int n = pattern.size(); vector &lt;int&gt; next(n + 1, 0); for(int i = 1; i &lt; n; i++){ int j = 1; while(j &gt; 0){ j = next[j];...

摸不着脑子的博客 299
上一篇: HDU 3336 Count the string(kmp)
下一篇: HDU 5074 Hatsune Miku(dp)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值