hdu1711--Number Sequence(KMP)
来源:互联网 发布:域名被墙如何实现301 编辑:程序博客网 时间:2024/06/05 19:22
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], 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
典型的KMP
#include<stdio.h>int a[1000010],b[10010];int next[10010];int n,m;void getNext(){ int j,k; j=0; k=-1; next[0]=-1; while(j<m) { if(k==-1||b[j]==b[k]) next[++j]=++k; else k=next[k]; } } //返回首次出现的位置 int KMP_Index(){ int i=0,j=0; getNext(); while(i<n && j<m) { if(j==-1||a[i]==b[j]) { i++; j++; } else j=next[j]; } if(j==m) return i-m+1; else return -1;} int main(){ int T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<m;i++) scanf("%d",&b[i]); printf("%d\n",KMP_Index()); } return 0;}
- hdu1711 Number Sequence(KMP)
- hdu1711 Number Sequence(KMP)
- hdu1711--Number Sequence(KMP)
- Number Sequence hdu1711 KMP
- hdu1711 Number Sequence,KMP
- hdu1711 Number Sequence (KMP)
- hdu1711 Number Sequence---KMP
- Number Sequence HDU1711 (kmp)
- HDU1711-Number Sequence-KMP
- hdu1711 number sequence KMP
- Hdu1711-Number Sequence-【KMP】
- hdu1711 Number Sequence(KMP水题)
- hdu1711 Number Sequence(KMP算法)
- HDU1711 Number Sequence(裸KMP)
- [裸KMP][HDU1711][Number Sequence]
- HDU1711 Number Sequence KMP基础
- hdu1711 Number Sequence kmp算法
- hdu1711——Number Sequence(KMP求位置)
- 性能分析之-- JAVA Thread Dump 分析综述
- numpy入门——数组组合
- 浏览器检查selenium的xpath、css定位,助你轻松搞定元素定位
- spring的AOP--面向切面编程
- 【转】回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
- hdu1711--Number Sequence(KMP)
- AngularJS风格指南
- laravel5.4+vue+element-ui配置及简单使用
- 递归 排队游戏 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)
- David Foster Wallace’s Kenyon College Commencement Speech(2005)
- php跳转传参
- ajaxSubmit上传文件
- dubbo-monitor监控安装
- 数据表多行数据转成多列数据