hdoj 1711 Number Sequence 【KMP】
2015-08-09 23:39
316 查看
Number Sequence
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15101 Accepted Submission(s): 6623
Problem DescriptionGiven two sequences of numbers : a[1], a[2], ...... , a
, 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
.
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
#include<stdio.h> #include<string.h> #include<stdlib.h> const int N=1000000+10; const int M=10000+10; int a ,b[M]; int next ; int ls,lm; void getn() { int i = 1,j = 0; next[0] = -1; next[1] = 0; while(i < ls) { if(j == -1||b[i] == b[j]) { i++,j++; next[i] = j; //求出 子串 的模式串 } else j = next[j]; } } int kmp() { int i,j; getn(); i = 0;j = 0; while(i < lm&&j != ls) { if(j == -1||a[i]==b[j]) //逐位比较子串与母串 { i++,j++; } else j = next[j]; } if( j == ls ) return i-ls+1; //从0开始所以要再加上 1. else return -1; //不满足的话 输出 -1. } int main() { int n,i,j,k; scanf("%d",&n); while(n--) { scanf("%d%d",&lm,&ls); for(i = 0;i < lm; i++) scanf("%d",&a[i]); for(j = 0;j < ls;j++) scanf("%d",&b[j]); k = kmp(); printf("%d\n",k); } return 0; }
相关文章推荐
- 2.7 UIView动画简单示例
- 2.6 UIView的ContentMode
- 2.4 UIView的基本属性和自定义
- burp suite使用(三)--- intruder收集关键信息
- The resource identified by this request is only capable of generating responses with characteristics
- UIView中的一些常用的方法
- 论文注解《Query Languages for Graph Databases》graph数据库查询语法(III)
- UIAlertView的一些使用
- Leetcode: Implement Stack using Queues
- UISearchBar去除背景颜色
- android Installation failed due to invalid URI! 错误处理
- IOS--UIImageView--帧动画
- PHP 用QueryList抓取网页内容
- UI控件
- UIWindow
- Duilib应用修改程序图标方法
- Duilib应用修改程序图标方法
- Duilib应用修改程序图标方法
- 树状数组 hdu2227 Find the nondecreasing subsequences
- hdoj 1711 Number Sequence