HDU - 2087 剪花布条( kmp )

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

在这里插入图片描述

思路

单模式匹配,kmp解决。正常的kmp求的是模式串在文本串中出现多少次,模式串对应的文本串的子串互相之间可能会有交集,但是这个题每次匹配成功后就把子串删去了,也就是要求匹配的子串不能有交集,那么只需要在匹配成功后模式串上的指针 j 不在变成 next [ j ] ,而是从 0 开始就行。

代码
// Problem: Cyclic Nacklace
// Contest: Virtual Judge - HDU
// URL: https://vjudge.net/problem/HDU-3746
// Memory Limit: 32 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int t,Next[maxn];
string s1,s2;

void getnext(string s,int len)
{
	int k=-1,j=0;
	Next[0]=-1;
	while(j<len)
	{
		if(k==-1||s[j]==s[k])
		{
			k++;
			j++;
			Next[j]=k;
		}
		else k=Next[k];
	}
} 
void kmp(string s1,string s2,int l1,int l2)
{
	int i=0,j=0,sum=0;
	while(i<l1)
	{
		if(j==-1||s1[i]==s2[j])
		{
			i++;
			j++;
		}
		else j=Next[j];
		if(j==l2)
		{
			sum++;
			j=0;
		}
	}
	cout<<sum<<endl;
}

int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	while(cin>>s1)
	{
		if(s1=="#") break;
		cin>>s2;
		int l1=s1.size();
		int l2=s2.size();
		getnext(s2,l2);
		kmp(s1,s2,l1,l2);
	}
    return 0;
} 
【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 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面... 阅读详情

相关推荐

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算法(不重叠计算)

众所周知,KMP算法中模式串T的next数组,是KMP算法的核心。 next数组的核心作用是“当模式串T的第j位与主串S的第pos位失配时(即 T[j]≠S[pos] 时),让模式串T的第next[j]位与主串S的第pos位再进行比较”。这相当于让模式串T往右移动了 j-next[j] 位后,再进行比较。正是由于next数组的引入,使得KMP算法的效率大大优于BF算法。

hnjzsyjyj的专栏 1130

避坑指南:ESP32S3驱动INMP441麦克风时的常见硬件冲突与解决方案

本文详细解析了ESP32S3驱动INMP441麦克风时常见的硬件冲突问题,包括GPIO资源冲突、电源噪声、I2S时钟同步等,并提供了实用的解决方案和优化策略。通过实测数据和代码示例,帮助开发者快速排查和解决音频设备开发中的疑难问题,提升系统稳定性和音频质量。

embedding5hiker的博客 942

【HDU】2087 - 剪花布条(KMP)

点击打开题目 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16102    Accepted Submission(s): 10188 Problem Description 一块花布条

wyg1997 736

Cadence 设计实践笔记-小哥allegro 2层板笔记

规范建立文件夹本章节主要跟着B站PCB入门首选视频-小哥Cadence Allegro 2层板视频,结合自己的实践一步步完成一个完整的PCB板的设计。规范建立文件夹建立八个文件夹我使用的Cadence 17.4 有些差异原理图绘制原图绘制首先要熟悉原理图工作原理工作原理下面是这个项目的原理图重点关注电源新建原理图库打开Cadence 软件创建项目新建工程 File ==========》Project我这里选择了Enable PSPice 试试能不能仿真,新建项目如下。

我的专栏 1479

088、多摄像头跨镜目标追踪 ID 频繁切换?ReID 特征 + 轨迹关联 + 时间约束方案

文章摘要:本文针对多摄像头跨镜目标追踪中ID频繁切换的问题,提出了一种结合ReID特征、轨迹关联和时间约束的综合解决方案。作者分析了ID切换的三个主要原因:ReID特征不稳定、轨迹关联依赖最近邻匹配以及忽略时间约束。通过改进ReID特征提取(多层特征融合)、引入轨迹预测(卡尔曼滤波)和添加时间窗口约束,成功将ID切换率从35%降至3%以下。文章详细分享了实现细节和踩坑经验,为跨摄像头目标追踪提供了实用优化思路。

ai技术增长的博客 169

HDU 4811 [思维]

思维

m0_56366807的博客 187

专为AI打造的浏览器:内存占用仅为Chrome的1/9、比Chrome快11倍(Docker部署教程,支持飞牛nas等服务器部署)

🚀 专为AI打造的无头浏览器来了! 用Zig从零构建,内存仅Chrome的1/9,速度快11倍,原生CDP协议支持Docker部署,适合爬虫、自动化测试和AI代理应用。✨

XiaoqiangClub的博客 730

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 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一...

pxlsdz的博客 1020

使用AI预测彩票的架构思路

彩票是随机的数字游戏,不要过度依赖AI,本文仅供娱乐研究

淘淘小窝 9407

【ARMv8 异常模型入门及渐进7 - GIC及安全中断介绍】

GIC-v3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

CodingCos的博客 2116

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

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

dipinzhu4111的博客 172

【电容/电感】电路板会“滋滋”的响,我们称它为啸叫

一、啸叫的起源 大部分硬件工程师应该都遇到过,PCBA上电后出现“滋滋滋”的叫声,其声响或大或小,或时有时无,或深沉或刺耳,或变化无常者皆有。该现象我们称为“啸叫”,一般分为电感啸叫和电容啸叫。

云轩阁 6万+

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

基于 InceptionNeXt 模块增强的 YOLOv8 模型:针对多尺度目标检测的改进与实现

modules.py。

know_F0727的博客 203

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

a10b12c13d14e15的博客 375

jre9下载 jdk9

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

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

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

hdu 2087 剪花布条 KMP水题。。

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

Lionel 1613

HDU 2087 - 剪花布条(KMP)

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

Ripcord丶的博客 348

HDU 2087剪花布条(KMP)

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

张辰宇的博客 272

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

    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

KMP-剪花布条-HDU - 2087

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

njuptACMcxk的博客 240
上一篇: HDU 3746 Cyclic Nacklace ( kmp求最小循环节 )
下一篇: HDU - 2072 单词数( 字典树 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值