Number Sequence (KMP的应用)

个人心得:朴素代码绝对超时,所以要用到KMP算法,特意了解了,还是比较抽象,要多体会

Given two sequences of numbers : a11, a22, ...... , aNN, and b11, b22, ...... , bMM (1 <= M <= 10000, 1 <= N <= 1000000). Your task is to find a number K which make aKK = b11, aK+1K+1 = b22, ...... , aK+M1K+M−1 = bMM. If there are more than one K exist, output the smallest one. 

InputThe 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 a11, a22, ...... , aNN. The third line contains M integers which indicate b11, b22, ...... , bMM. All integers are in the range of 1000000,1000000−1000000,1000000. 
OutputFor 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
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<utility>
 6 #include<queue>
 7 #include<set>
 8 using namespace std;
 9 int n,m;
10 int a[1000005],b[10005];
11 void getnext(int x[],int next[])
12 {
13     int i=0;
14     int j=-1;
15     next[i]=-1;
16     while(i<m)
17     {
18         if(j==-1||x[i]==x[j])
19         {
20             i++;
21             j++;
22             next[i]=j;
23         }
24         else
25             j=next[j];
26     }
27 }
28 int main()
29 {
30      int t;
31      scanf("%d",&t);
32      while(t--)
33      {
34          int next[10005];
35          int flag=-1;
36          scanf("%d%d",&n,&m);
37          for(int i=1;i<=n;i++)
38             scanf("%d",&a[i]);
39          for(int i=0;i<m;i++)
40             scanf("%d",&b[i]);
41         getnext(b,next);
42         int i=1,j=0;
43           while(i<=n&&j<m)
44           {
45               if(j==-1||a[i]==b[j])
46               {
47                   i++;
48                   j++;
49               }
50               else
51                 j=next[j];
52           }
53           if(j==m)  flag=i-j;
54           cout<<flag<<endl;
55 
56 
57      }
58     return 0;
59 
60 
61 }

 



转载于:https://www.cnblogs.com/blvt/p/7270543.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实现gdal栅格矢量化,《GDAL源码剖析与开发指南》一一1.5 GDAL源码目录

本节书摘来自异步社区出版社《GDAL源码剖析与开发指南》一书中的第1章&#xff0c;第1.5节&#xff0c;作者&#xff1a;李民录 更多章节内容可以访问云栖社区“异步社区”公众号查看。1.5 GDAL源码目录GDAL源码剖析与开发指南下载的GDAL源代码压缩包目录如图1-2所示&#xff0…

Cocos2d-X开发中国象棋《九》走棋规则

在上一节中实现了走棋&#xff0c;这篇博客将介绍中国象棋中的走棋规则 在写博客前先可能一下象棋的走棋规则&#xff1a; 1&#xff09;将 将的坐标关系&#xff1a;横坐标相等&#xff0c;纵坐标相减绝对值等于1&#xff0c;或者纵坐标相等&#xff0c;横坐标相减绝对值等于1…

php代码expl,php – 参数号无效:参数未定义Explination

我使用一个简单的测试表来尝试调试此错误.我试着写一个脚本,用户可以更新他们的用户信息,我搜索过但没有找到任何具体的帮助我.我的测试代码如下&#xff1a;PHPif(isset($_POST[submitBtn])){//Display Errors{{ PDO::ATTR_ERRMODE; }}$db->setAttribute( PDO::ATTR_ERRMOD…

js学习总结----编写简单的ajax方法库

具体代码如下: ~function(){//ajax:实现ajax请求的公共方法;当一个方法传递的参数过多&#xff0c;而且还不固定&#xff0c;我们使用对象统一传值法&#xff08;把需要传递的参数值都放在一个对象中&#xff0c;一起传递进去即可&#xff09;function ajax(options){//把需要使…

netlify支持php吗,hexo netlify 搭建简易博客

npm install hexo-cli -ghexo init blogcd blognpm installhexo server将本地文件夹推送到github修改主题git clone https://github.com/jangdelong/hexo-theme-xups.git themes/xups themes/xups修改yml配置文件重新hexo server自己的博客sleepy-poincare-e0ca11.netlify.c…

jps、jstack、jmap、jhat、jstat、hprof使用详解

https://my.oschina.net/feichexia/blog/196575#comment-list A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息。语法格式如下&#xff1a; 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下&#xff1a;…

oracle数据库日期格式的运算,Oracle时间类型date,timestamp时间差计算

Oracle的时间类型有两种date和timestamp. date精确到秒,timestamp精确到毫秒.1.计算date类型的时间差可以先把年,月,日,小时,分,秒用to_char函数拆分出来,再用to_number函数转换成数值类型.有了这些单独分开的时间就好办了.就再一个个的去减,记得考虑单位换算就行.比如都转换…

pta乙级之路

1017 A除以B (20分) #include #include #include<math.h> using namespace std; int main() { string str; cin>>str; int n,ch[1009]; cin>>n; int lenstr.length(); for (int i0;i<len;i){ ch[i]str[i]-‘0’; } for (int i0;i<len-1;i){ ch[i1]10*(…

oracle禁止修改密码,Oracle 用户密码过期后不允许修改密码的示例代码

--本人是初学者&#xff0c;不知道还有没有更好的方法create table PASSWD_CHANGED(USER_NAME VARCHAR2(20),OLD_PASSWD VARCHAR2(100),NEW_PASSWD VARCHAR2(100))CREATE OR REPLACE FUNCTION my_password_verify(usernameVARCHAR2,passwordVARCHAR2,old_passwordVARCHAR2)RETU…

查看网关

简单记两个 [rootoracle ~]# ip route show default via 192.0.2.2 dev eth0 proto static 192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.110 metric 1 [rootoracle ~]# route -n Kernel IP routing table Destination Gateway Genmask …

double的四舍五入和上下取整

在头文件中有math。 向上取整&#xff1a;ceil(double x); 向下取整&#xff1a;floor(double x); 四舍五入&#xff1a;round(double); 特别注意&#xff1a;在C语言中上面的三个函数返回的是double型的。 但是&#xff1a; #include<iostream> #include<cmath> …

url去除掉一个参数php,php怎样去掉url中的参数_后端开发

php去掉url中的参数的要领是&#xff1a;能够经由过程trim()函数来完成。该函数能够删除字符串中的指定字符&#xff0c;并返回已修正的字符串。细致使用要领如&#xff1a;【trim($url,"?");trim($url,"#");】。相干函数引见&#xff1a;(引荐教程&#…

C++之类的静态成员变量和静态成员函数

static静态成员函数 在类中。static 除了声明静态成员变量&#xff0c;还能够声明静态成员函数。普通成员函数能够訪问全部成员变量。而静态成员函数仅仅能訪问静态成员变量。我们知道。当调用一个对象的成员函数&#xff08;非静态成员函数&#xff09;时&#xff0c;系统会把…

Oracle杀事务数据库崩溃,关于pl/sql dev窗口崩溃导致锁表

今天在用pl/sql dev写sql的时候&#xff0c;刚刚写到一个select XXX from table for update,打开了锁的按钮&#xff0c;进行了数据修改&#xff0c;这个时候没有commit&#xff0c;因为临时有事&#xff0c;所以先出去一会&#xff0c;半个小时回来后&#xff0c;发现点击pl/s…

使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一

好吧&#xff0c;现在我们假设你已经安装好了VS Code开发工具、.Net Core 2.0预览版的SDK dotnet-sdk-2.0.0&#xff08;注意自己的操作系统&#xff09;&#xff0c;并且已经为VS Code安装好了C#扩展&#xff08;在VS Code的扩展菜单中输入OmniSharp&#xff0c;安装扩展即可&…

oracle12 扩充表空间,oracle查询及扩充表空间

查询表空间目录及是否自动扩展select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files order by file_id desc;总的表空间情况select substr(a.tablespace_name,1,15) tablespacename,sum(a.bytes/1024/1024) as "totle_size(M)"…

WPF--TextBlock的ToolTip附加属性

大家可能在项目中&#xff0c;有的时候&#xff0c;由于显示的内容过长&#xff0c;所以&#xff0c;需要显示一部分内容&#xff0c;然后后面用省略号&#xff0c;把鼠标放上去&#xff0c;会显示出来全部的内容。 作为一个LowB程序员的我&#xff0c;第一反应是SubString截取…

L2-001 紧急救援 (25 分)

L2-001 紧急救援 (25 分)作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#x…

oracle 虚拟补丁,趋势科技虚拟补丁(Virtual Patch)

本帖最后由 vger520 于 2012-4-26 09:20 编辑预先防止漏洞遭到攻击Virtual Patch(虚拟补丁)实际案例微软最近紧急通知系统管理员立即安装一个影响所有 Windows 系统的重大安全更新&#xff1a;「MS12-020远程桌面的漏洞可能会允许远端执行程序码」。而趋势科技的客户在该漏洞发…

Laravel框架一:原理机制篇

转载自http://www.cnblogs.com/XiongMaoMengNan/p/6644892.htmlLaravel作为在国内国外都颇为流行的PHP框架&#xff0c;风格优雅&#xff0c;其拥有自己的一些特点。 一. 请求周期 Laravel 采用了单一入口模式&#xff0c;应用的所有请求入口都是 public/index.php 文件。 注册…