HDU 1711 Number Sequence 【KMP应用 求成功匹配子串的最小下标】

从实验室到生产线:迈克耳孙干涉仪原理在现代精密测量中的‘隐形’应用 本文探讨了迈克耳孙干涉仪原理在现代精密测量中的广泛应用,从半导体制造到引力波探测,再到光纤通信和消费电子产品。文章详细介绍了这一经典光学技术如何通过创新实现纳米级精度测量,并成为支撑高科技产业的隐形支柱。 阅读详情

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1711

Number Sequence

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 42917    Accepted Submission(s): 17715


Problem Description
Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make a[K] = b[1], a[K + 1] = b[2], ...... , a[K + M - 1] = b[M]. If there are more than one K exist, output the smallest one.
 

 

Input
The first line of input is a number T which indicate the number of cases. Each case contains three lines. The first line is two numbers N and M (1 <= M <= 10000, 1 <= N <= 1000000). The second line contains N integers which indicate a[1], a[2], ...... , a[N]. The third line contains M integers which indicate b[1], b[2], ...... , b[M]. All integers are in the range of [-1000000, 1000000].
 

 

Output
For each test case, you should output one line which only contain K described above. If no such K exists, output -1 instead.
 

 

Sample Input
2
13 5
1 2 1 2 3 1 2 3 1 3 2 1 2
1 2 3 1 3
13 5
1 2 1 2 3 1 2 3 1 3 2 1 2
1 2 3 2 1
 
Sample Output
6
-1
 

 

Source

 

题意概括:

给出一串主串,一串子串;

求成功匹配到子串的最小下标;

 

解题思路:

KMP的应用,稍微变形,匹配到子串就跳出来输出。

 

AC code:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cmath>
 6 #define INF 0x3f3f3f3f
 7 using namespace std;
 8 const int MAXN = 1e6+10;
 9 const int MAXM = 1e4+10;
10 int W[MAXM], T[MAXN];
11 int wlen, tlen;
12 int nxt[MAXM];
13 
14 void get_nxt()
15 {
16     int j, k;
17     j = 0;
18     k = -1;
19     nxt[0] = -1;
20     while(j < wlen){
21         if(k == -1 || W[j] == W[k]){
22             nxt[++j] = ++k;
23         }
24         else k = nxt[k];
25     }
26 }
27 
28 int KMP_index()
29 {
30     int i = 0, j = 0;
31     get_nxt();
32 
33     while( i < tlen && j < wlen){
34         if(j == -1 || T[i] == W[j]){
35             i++;
36             j++;
37         }
38         else j = nxt[j];
39     }
40     if(j == wlen) return i-wlen+1;
41     else return -1;
42 }
43 
44 int main()
45 {
46     int T_case, N, M;
47     scanf("%d", &T_case);
48     while(T_case--)
49     {
50         scanf("%d%d", &N, &M);
51         wlen = M, tlen = N;
52         for(int i = 0; i < N; i++)
53             scanf("%d", &T[i]);
54         for(int j = 0; j < M; j++)
55             scanf("%d", &W[j]);
56 
57         printf("%d\n", KMP_index());
58     }
59     return 0;
60 }
View Code

 

STM32 无线充电接收端硬件设计:从 LC 谐振到 PWM 控制的 5 大关键电路解析 本文深入解析了基于STM32的无线充电接收端硬件设计,重点探讨了LC谐振倍压整流、INA282电流采样、IR2104S半桥驱动、超级电容保护及STM32最小系统等5大关键电路。针对超级电容的恒功率充电需求,详细介绍了PID控制算法优化及PCB设计实战要点,帮助工程师提升无线充电系统的效率和可靠性。 阅读详情

相关推荐

戴尔G3/AWCC用户必看:揪出WMI Provider Host疯狂占用的元凶,附5.4.35旧版回退保姆级教程

本文针对戴尔G3/AWCC用户遇到的WMI Provider Host异常占用问题,提供了详细的诊断方法和解决方案。通过分析AWCC 5.5.14.0版本的资源占用问题,指导用户回退到稳定版AWCC 5.4.35,并附上保姆级教程和预防措施,帮助用户彻底解决系统卡顿问题。

weixin_30892037的博客 562

18周 oj 手机找回

/*小慧把手机掉了,着急的她想让你帮她找到,她的手机是很高级的, 离开主人一定时间后就会发射固定频率的电磁波。 现在你有一个仪器可以接受电磁波并能确定手机坐标, 请你编程来确定小慧和手机的距离。 4个double型的数,前两个是手机的坐标,后两个是小慧的坐标。 */ //以下代码会自动添加到程序的开始 #include #include #include #include

u012369106的专栏 1958

【移动APP测试】Firebase Test Lab (FTL) 实战指南:从零搭建自动化测试流水线

本文详细介绍了Firebase Test Lab (FTL) 在移动APP测试中的实战应用,从零搭建自动化测试流水线。通过真实设备、虚拟设备和iOS设备的全面覆盖,FTL帮助开发者高效进行兼容性测试、性能监控和崩溃分析,显著提升应用质量。文章还提供了设备选择策略、成本控制技巧和CI/CD集成的最佳实践,助力团队优化测试流程。

weixin_29281915的博客 255

ACM作业 找回手机

/* * 程序的版权和版本声明部分: * Copyright (c) 2013.烟台大学计算机学院 * All rights reserved. * 文件名称: * 作 者:何新新 * 完成日期:2014 年 5月 23日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述: * 问题描述: * 程序输出: */ #include #i

u012370136的专栏 699

Rocky Linux 9.0国内yum源一键替换指南(上海交大镜像站实测)

本文详细介绍了如何将Rocky Linux 9.0的yum源替换为上海交大镜像站,以解决国内用户访问官方源速度慢的问题。通过实测验证,上海交大镜像站提供高速下载和稳定更新,并提供了完整的替换步骤、常见问题解决方案及高级优化配置,帮助用户提升软件包下载效率。

weixin_29304985的博客 362

Windows安装ros2(Jazzy版本+win10/win11)-4.构建ros2结点

这个位置也是ros2搜索package以及搜索node的路径, 如果把构建好的可执行文件乱动位置的话就找不到节点了,当然如果复制一个可执行文件以及可执行文件-script.py文件, ros2也就会认为你有一个新的节点了,运行这个拷贝的可执行文件程序都是ok的。由于上一个文章给powershell7也增加了启动执行ros2的环境初始化文件local_setup.ps1, 所以我们也可以直接在vscode中运行节点, 此种方式没有经由ros2托管, 缺少其他ros2的附加能力。

weixin_48398592的博客 7114

黄金十二宫之金牛宫

【原贴位置:http://acm.tongji.edu.cn/people/ps/showproblem.php?problem_id=1001&contest_id=6】Problem话说星矢、紫龙、冰河、阿瞬为了救活雅典娜,必须勇闯黄金十二宫。 第二个他们来到金牛宫,身为金牛座黄金圣斗士的阿尔迪巴挡住了他们的去路,最终星矢和阿尔迪巴经过很多回合的较量,星矢终于爆发小宇宙,领悟了

生于忧患,死于安乐 2447

判断两个多边形是否相交(java实现)

判断两个多边形是否相交 ,当前认为一个点相交也是相交,可针对凹多边形和凸边型等多复杂的多边形进行相交判断,采用java实现,因为网上java实现的比较少,所以这里写下如何实现,适用于碰撞检测,地图等等应用场景

IT_CREATE的博客 5845

题目 2693: 蓝桥杯2022年第十三届决赛真题-卡牌 C++

需要自定义一个函数,用来判断是否正确运行了一次循环,如果是的话则ans++,否则跳出来.

Lukegood的博客 876

硬件测试实战笔记:SI/PI 到底测什么,怎么测?一文讲清

点选错了,数据越精确越误导。

qq_52293640的博客 263

流体动力学仿真软件:Star-CCM+_(1).Star-CCM+基础及入门

Star-CCM+的用户界面(UI)分为多个部分,包括菜单栏、工具栏、工作区、视图窗口和控制台。菜单栏包含文件、编辑、视图、工具等常用菜单。例如,“File”菜单可以用于打开、保存和退出项目。工具栏提供常用的工具按钮,如新建项目、打开项目、保存项目等。也可以自定义工具栏,添加常用的功能按钮。工作区显示当前项目的结构和各个对象。可以通过拖拽方式组织和管理项目中的各个部分。视图窗口显示几何模型、网格、结果等。可以通过不同的视图模式查看和分析数据。控制台显示软件的运行日志和输出信息。

kkchenjj的博客 1204

机试之字符串匹配——HDU1711-Number Sequence

文章目录机试之字符串匹配——HDU1711-Number Sequence1、KMP原理及代码1.1KMP原理1.2KMP代码2、例题HDU1711Number Sequence2.1题目2.2代码 机试之字符串匹配——HDU1711-Number Sequence 1、KMP原理及代码 1.1KMP原理 KMP是字符串匹配的一种较好的算法。字符串匹配在字符串的应用中很常见,其常见的方法有: 直接...

李霁明的博客 311

Copilot在游戏开发中的应用:Unity脚本自动生成实践

2021年GitHub Copilot的发布,为代码自动生成带来了革命性突破。作为基于GPT模型训练的AI辅助编程工具,Copilot能根据注释、函数名、代码上下文,实时生成符合语法和逻辑的代码片段,甚至完整脚本。减少重复劳动:自动生成模板代码(如生命周期、结构),让你专注核心逻辑;降低API学习成本:对Unity特有的组件(RigidbodyAnimator)、类(),Copilot能生成符合最佳实践的调用代码;统一代码风格:通过团队共享提示词模板,让生成的代码符合项目规范;快速原型迭代。

AIGC应用创新大全的博客 1619

HDU 1711 Number Sequence(kmp模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20827    Accepted S

hkh746392783的专栏 390

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《HDU 1711 - Number Sequence》的题解

《HDU 1711 - Number Sequence》的题解 题目的描述 Given two sequences of numbers : a[1], a[2], … , a[N], and b[1], b[2], … , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K ...

weixin_46163391的博客 255

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

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

KMP-Number Sequence-HDU - 1711/Acwing-KMP字符串

KMP-Acwing-KMP字符串 题目: 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S中多次作为子串出现。 求出模板串P在模式串S中所有出现的位置的起始下标。 输入格式 第一行输入整数N,表示字符串P的长度。 第二行输入字符串P。 第三行输入整数M,表示字符串S的长度。 第四行输入字符串S。 输出格式 共一行,输出所有出现位置的起始下标...

njuptACMcxk的博客 410

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

HDU-1711-Number Sequence

链接:https://vjudge.net/problem/HDU-1711 题意: 给出两个数字序列 : a[1], a[2], ...... , a[N], 和 b[1], b[2], ...... , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). 你的任务是找到一个数字K满足: a[K] = b[1], a[K + 1] =...

weixin_34113237的博客 79

HDU 1711 Number Sequence【KMP】【模板题】

 HDU 1711 Number Sequence   求母串第几位开始能和子串匹配,不能则输出-1  #include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;stdio.h&gt; using namespace std; const int maxn = 1e6+20; int nxt[maxn]; int m;//...

不甘 240

hdoj 1711 Number Sequence【kmp(数字数组)】

Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15877    Accepted Submission(s): 7000 Problem Description Given two

dxx_111的博客 628

HDOJ 1711 Number Sequence(KMP算法)

HDOJ 1711 Number Sequence—KMP算法 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 题目描述: Given two sequences of numbers : a[1], a[2], … , a[N], and b[1], b[2], … , b[M] (1 <= M <= 10000, 1 <...

qiaomm的个人博客 594

HDU-#1711 Number Sequence(KMP)

题目大意:给定长度为n的数字串,以及长度为m的模板串,问模板串是否是数字串的子串,是就输出第一个匹配的下标,否则输出-1.       解题思路:是一道很裸的KMP匹配题,基本上就是模板题,主要是算法不是很好理解的,搜了很多资料,推荐【这篇博客】,浅显易懂的一篇,看了就能理解的。其它的详见code。       题目来源:http://acm.hdu.edu.cn/showproblem.ph

VoidSun 392

【KMP】HDU 1711 Number Sequence

Number Sequence Given two sequences of numbers : a[1], a[2], … , a[N], and b[1], b[2], … , b[M] (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make a[K] = b[1]...

CTGU_UN_GO的博客 214

Number Sequence HDU - 1711 (KMP)

Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 &lt;= M &lt;= 10000, 1 &lt;= N &lt;= 1000000). Your task is to find a number K which make a[K] = b[1], a[K...

Top_Spirit的博客 169

HDU 1711 Number Sequence

裸KMP,求给定的数字序列中是否有给出的子串,即模式串。如果有的话,输出与模式串匹配上的首字母下标。 Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14806    Accepted Su

Moressette流沙的博客 435

【KMP算法】HDU 1711 Number Sequence【模板题】

KMP算法详解1【next讲的挺好的,图解比较详细】 KMP算法详解2 HDU 1711 Number Sequence KMP算法:从文本串 s 中找到模式串 t 的首位置并输出,如果不存在则输出-1. 关于next[ i ]是指模式串中不包含s[ i ]的前面的子串中前后缀相同的字符个数. (如果 t是从下标1开始,那么next[ i ]则代表模式串中不包含s[ i ]的前面的子串...

L_X_ 300
上一篇: POJ 3461 Oulipo 【KMP统计子串数】
下一篇: “东信杯”广西大学第一届程序设计竞赛(同步赛)H 图论一顿套模版 【最短路 求对数技巧】...
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值