#include <stdio.h>
#include <string.h>
/*
10 5 10
2 4 2 4 2 4 2 4 2 4
1 2 1 2 1
题目大意:给一个N,M,K,序列a[],b[],在a[]中找出,和b[]相对大小一样的子序列
求序列的个数(序列不能重复)
思路:KMP,找到满足条件,跳到i+m处 继续往下搜
主要难点在于,如何判断满足条件。
我们只要比较i之前a中a[i]的个数和B中B[i]的个数是否相等,
以及a中小于a[i]的个数和B中小于B[i]的数字个数是否相等。
*/
const int N = 100005;
int n,m,k;
int a[N],b[N],next[N];
int f[30][N],g[30][N];
int judge(int j,int i)
{
int eq1=0,lt1=0,eq2=0,lt2=0;
for(int x=1;x<=k;x++)
{
if(x<a[i]){
lt1+= f[x][i] - f[x][i-j];
}
else if( x==a[i]){
eq1+= f[x][i] - f[x][i-j];
}
//当前b[] 位置j
if(x<b[j]){
lt2+= g[x][j];
}
else if( x==b[j]){
eq2+= g[x][j];
}
}
return (lt1==lt2 && eq1==eq2);
}
void getNext()
{
int j=0;next[1]=0;
for(int i=2;i<=m;i++)
{
while(j>0 && !judge(j+1,i))
j=next[j];
if(judge(j+1,i)) j++;
next[i]=j;
}
}
int kmp()
{
int ans=0;
int j=0;
for(int i=1;i<=n;i++)
{
while(j>0 && !judge(j+1,i))
j=next[j];
if(judge(j+1,i))
j++;
if(j==m)
{
ans++; j=0;//继续往下找
}
}
return ans;
}
int main()
{
while(scanf("%d%d%d",&n,&m,&k)!=EOF )
{
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
for(int j=1;j<=k;j++)
f[j][i]= f[j][i-1];
f[a[i]][i]++;
}
for(int i=1;i<=m;i++)
{
scanf("%d",&b[i]);
for(int j=1;j<=k;j++)
g[j][i]= g[j][i-1];
g[b[i]][i]++;
}
getNext();
printf("%d\n",kmp());
}
return 0;
}相关推荐
PostgreSQL14 离线安装全攻略:从下载到配置详解
本文详细介绍了PostgreSQL14在无网络环境下的离线安装全流程,涵盖RPM包与源码编译两种主流方法。文章重点解析了安装前的系统环境检查、依赖包准备、数据库初始化、远程访问配置以及安装后的关键检查与性能调优,旨在帮助运维和开发人员在离线服务器上高效、稳定地部署PostgreSQL14数据库。
hdu 4749 (转化的KMP)
//hdu 4749 /* 题意:给出两个数列(可以看成串),问最多能在串1中找出几个不重叠的substring,使得这些substring的元素的相对大小关系与串 2相同(显然,长度也要与串2相同)。 解题思路:kmp。。比赛的时候有想到这个思路,但一直不知道怎么搞定这个相对大小关系。其实很简单。。 count(Ai<An+1)=count(Bi<Bn+1),i=1..n count
Vivado 2023.1及更早版本永久License全功能解锁:HLS、System Generator等IP核使用详解
本文深入解析Vivado 2023.1及更早版本的全功能许可证,详细指导如何解锁HLS、System Generator等高级IP核。通过许可证类型对比、功能验证方法和实战应用指南,帮助FPGA开发者充分利用Vivado工具套件,提升复杂系统设计和算法加速的效率。
hdu 4749 Parade Show ( kmp )
hdu 4749 Parade Show ( kmp ) 题意:给出两个数列(可以看成串),问最多能在串1中找出几个不重叠的substring,使得这些substring的元素的相对大小关系与串2相同(显然,长度也要与串2相同)。 解题思路:kmp。。比赛的时候有想到这个思路,但一直不知道怎么搞定这个相对大小关系。其实很简单。。 count(AiAn+1)=count(BiBn+1),i
Cadence安装
选择刚刚解压的E盘DVD驱动中的setup.exe文件,安装路径推荐D盘,此处会自己给你新建文件夹,我们无需手动建文件夹。但是,新产品有一些BUG(影响使用流畅性),所以我们要对17.4打补丁,补丁包同样去吴川斌的博客下载。下载阿狸狗破戒大师 我这边下载的是版本V3.2.6,同样在吴川斌的博客下载安装包,链接同上。记录一下安装过程,方便以后安装使用Cadence。破解完成后,建议将这两个软件创建快捷方式到桌面。到这里,我们已经可以正常的使用Cadence了。对光盘映像文件解压后双击,可以在我的电脑看到。
华为昇腾Atlas 200I DK A2实战:从开箱到运行首个AI应用
本文详细介绍了华为昇腾Atlas 200I DK A2开发板从开箱到运行首个AI应用的全过程。包括硬件准备、系统烧录、开发板连接方案、AI应用运行及性能优化技巧,帮助开发者快速上手部署AI项目,提升开发效率。
HDU 4749 Parade Show(KMP)
Parade Show Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 921 Accepted Submission(s): 386 Problem Description 2013 is th
当OTN网络遭遇LOS告警:5个运维老手才知道的故障定位技巧(含CA动作对照表)
本文深入解析OTN网络中LOS告警的实战定位技巧,涵盖光功率深度诊断、模块差异分析及核心的CA动作机制。通过逆向追踪告警流与对照速查表,帮助运维人员快速锁定故障段落,区分硬软故障,并掌握系统健康度评估方法,从而提升排障效率与网络稳定性。
hdu4749
题意来自 题目大意:学校要举办一场典礼,要从n个学生中选若干支队伍来,每支队伍有m个人。然后现在将学生的身高划分成k个等级,接着按照学生的顺序给出学生的身高等级,再然后,给出m个人的队伍要求的相对高度。然后要求从n个中间挑选连续的m个人,满足相对高度即可组成一支队伍。问说最多可以组成多少支队伍。解题思路:KMP算法的变形,只不过在判断相等的时候有点难办,因为它算的是相对高度,就是同一支队伍中,对应
10天冲刺国自然基金!用这套实战AI提示词指令教程,助你中标率翻倍!亲测DeepSeek和ChatGPT不好用
虽然以上国自然提示词指令经过反复实测,但并不是万能无脑帮你搞定所有,大模型AI的特性是你专业领域能力越强,它的智商表现就会更加强大,通过以上提示词教程的使用,大大提升中标概率是肯定的。还有就是大模型的使用上,不是市面上大家都说好的就一定适用,目前来看,Gemini和Claude的两个模型是非常适合国自然本子的修改的。在使用大模型进行国自然本子撰写修改时,首先是角色的设定,然后是目标和背景的描述,好用的提示词指令都是要经过无数次的实测,比对输出结果后又反复调整,达到最佳的效果状态的提示词指令。
鱼鹰优化算法(OOA)详解:从猛禽捕食智能到优化算法实现
鱼鹰优化算法(Osprey Optimization Algorithm, OOA)是2023年提出的一种新型元启发式优化算法,灵感来源于鱼鹰(一种中型猛禽)高效的捕食策略。算法模拟了鱼鹰从空中识别水下鱼类位置并俯冲捕食,然后将捕获的鱼带至安全位置享用的全过程,以此抽象出全局探索和局部开发两个核心阶段。OOA算法具有参数少、结构简单、收敛速度快、全局寻优能力强等特点。自提出以来,已在函数优化、机器学习参数调优(如CatBoost模型)、路径规划等多个领域展现出良好性能,为解决复杂优化问题提供了新的有效工具。
hdu 4749
题目很简单,不过题意很难看懂。 就是给一个标准的大小关系的队列,从原队列中找出最多的匹配子队列,感觉就像一个KMP算法+贪心; 不过这个题可能数据有点水把,竟然只要判断相邻的关系就可以A掉; 代码: 1 #include<cstdio> 2 #define maxn 100005 3 using namespace std; 4 int q[maxn],s...
常用元器件使用方法13:物理层接口芯片DP83848的使用方法
介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...
HDU 4749 & POJ 3167 kmp变形
HDU4749题意给定一个主串 TT 和模式串 PP,问 TT 有多少个不重合的子串与 PP 匹配。在这里,串 aa 与串 bb 匹配的含义是,∀i,j,1≤i,j≤n,⎧⎩⎨a[i]<a[j]↔b[i]<b[j]a[i]==a[j]↔b[i]==b[j]a[i]>a[j]↔b[i]>b[j]\forall i,j,1\leq i,j\leq n,\begin{eqnarray}\begin{cas
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
Poj 3167 Cow Patterns Hdu 4749 Parade Show (KMP大小关系相同匹配+树状数组)
两道题差不多,区别在于匹配时是否允许重叠
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
HDU-4749 Parade Show KMP算法 | DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题意:给两个串S和P,求S串中存在多少个与P串的大小关系一样的串。 因为数字的范围是1<=k<=25之间,所以可以暴力的求25*25次KMP。当然完全没有必要这样做,在KMP的时候记录各个数的所表示的数就可以了,只需要求一遍KMP,复杂度降为O(25*n)。 ...
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
HDU 4749 KMP... 算是KMP 吧。。。
HDU4749 一道稍微饶了点弯子的KMP 题目。。。 给定一个模式串,要求匹配的字符串中字符的两两大小关系与模式串相同 比如: 模式串 1 3 5 2 4 6 匹配串 9 12 16 10 14 19 就是一组合法的匹配。 其实没什么复杂的。。 顺序处理模式串当中的每一个字符,处理出: (如果该字符之前出现过)在其前面等于该字符的字符位置 (如果该字符没出现过)或者是大
hdu4749 Parade Show(kmp)
题目链接:点这里!!! 题意: 给定两个数组a(文本串),b(模式串)。问文本串能匹配出多少个模式串(不允许重叠)。"匹配"的意思各自离散化之后的串是一样的。 例如:(20,2,2,5,1,3,21) 与 (10 10 15,1) 。(2,2,5,7)与(10,10,15,1)是匹配的。 数据范围len 题解: 1、首先看到这种题目涉及到模式串的匹配问题,很容易往km
hdu 4749 Parade Show KMP
题目意思,给你两个串,让你求出第一个串中有多少个紫串,这个子串和第二个串满足:任意一个数字在其中的相对位置都一样。 串与串不能重叠,求最多有多少个。 其实就是给你一个文本串一个模式串求有多少个匹配的问题,典型的KMP,但这里所谓的“匹配”,不是指两个数字相同,而是指两个数字在期中对位置等价。 由此可以想到,我们可以用一个函数,代替KMP中 s[i]!=p[i]这条语句,而这个函数,就是
kmp变形 如何判断第i个字符是否匹配函数 hdu 4749
题目来源: http://acm.hdu.edu.cn/showproblem.php?pid=4749 题意: 题意:给出两个数字串A、B。问A中有多少不相交的子串a能匹配B。匹配的意思是a中任意两个位置i和j的大小关系和B的这两个位置的大小关系是一样的。 思路:若是完全一模一样的匹配的话那么KMP是很好理解的。那么对于上述的比较方式怎么比较两个串相等呢?对于a的位置j和B的位置i(j
hdu-4749:Parade Show(kmp模板题)
kmp的略微变形
HDU 4749 Parade Show 数据结构KMP变形
Parade Show Every student has its own number, from 1 to n. (1<=n<=10^5), and they are standing from 1 to n in the increasing order the same with their number order. According to requirement of sch
HDU 4749 Parade Show(贪心+kmp)
题目链接 题目都看不懂,做毛线。。。看懂了之后就是kmp出,所有的匹配区间,然后DP可以写,贪心也可以做把,DP应该需要优化一下,直接贪,也应该对的,经典贪心问题。 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 ...
hdu 5972 Regular Number 字符串Shift-And算法 + bitset
题目链接 题意 给定两个串\(S,T\),找出\(S\)中所有与\(T\)匹配的子串。 这里,\(T\)的每位上可以有若干(\(\leq 10\))种选择,匹配的含义是:对于\(S\)的子串的每一位,\(T\)的相应位都有一种选择与之对应。 题解 shift-and算法详解 https://www.douban.com/note/321872072/ 搜出来的题解全都是\(shift-a...
luogu 2463 [SDOI2008]Sandy的卡片 kmp || 后缀数组 n个串的最长公共子串
题目链接 Description 给出\(n\)个序列。找出这\(n\)个序列的最长相同子串。 在这里,相同定义为:两个子串长度相同且一个串的全部元素加上一个数就会变成另一个串。 思路 参考:hzwer. 法一:kmp 在第一个串中枚举答案串的开头位置,与其余\(n-1\)个串做\(kmp\). 法二:后缀数组 将\(n\)个串拼接起来。二分答案\(len\),将\(height\)分组...
720



被折叠的 条评论
为什么被折叠?



