hdu(Number Sequence 1711)kmp
来源:互联网 发布:dota2天梯淘宝买账号 编辑:程序博客网 时间:2024/04/29 15:15
NumberSequence
TimeLimit: 10000/5000 MS(Java/Others)Total Submission(s):5019
Problem Description
Given two sequences of numbers : a[1], a[2], ...... , a[N], andb[1], b[2], ...... , b[M] (1 <= M <=10000, 1 <= N <= 1000000). Your taskis 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 ofcases. Each case contains three lines. The first line is twonumbers N and M (1 <= M <= 10000, 1<= N <= 1000000). The second linecontains N integers which indicate a[1], a[2], ...... , a[N]. Thethird 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 Kdescribed above. If no such K exists, output -1instead.
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 32 1 2 1 2 3 2 1
Sample Output
6-1
Source
HDU 2007-Spring Programming Contest
#include <stdio.h>#include<string.h>#include<algorithm>#define MAX 1000000using namespace std;int next[MAX];int a[MAX],b[MAX];int x,y;int kmp(){ int i=0,j=0; while(i<x){ if(j==-1||a[i]==b[j]){ i++; j++; } else j=next[j]; if(j==y) return i-y+1; } return -1;}void getnext(){ int j,k; next[0]=-1; j=0; k=-1; while(j<y-1){ if(k==-1||b[j]==b[k]){ j++; k++; next[j]=k; } else k=next[k]; }}int main(){ int t,i; scanf("%d",&t); while(t--){ scanf("%d%d",&x,&y); memset(next,0,sizeof(next)); for(i=0;i<x;i++) scanf("%d",&a[i]); for(i=0;i<y;i++) scanf("%d",&b[i]); getnext(); //for(i=0;i<y;i++) // printf("%d",next[i]); printf("%d\n",kmp()); } return 0;}
0 0
- HDU 1711:Number Sequence(KMP)
- HDU 1711 Number Sequence(KMP)
- HDU 1711 Number Sequence (KMP算法)
- HDU:1711 Number Sequence(KMP)
- hdu(Number Sequence 1711)kmp
- HDU - 1711 Number Sequence (KMP模板)
- hdu 1711 Number Sequence:(KMP)
- HDU-#1711 Number Sequence(KMP)
- hdu 1711 Number Sequence KMP(水)
- HDU 1711 Number Sequence(kmp)
- HDU-1711 Number Sequence(kmp入门)
- HDU 1711 Number Sequence(KMP)
- HDU 1711 Number Sequence (kmp 已被搞死。)
- HDU 1711 Number Sequence(kmp)
- HDU - 1711 Number Sequence(KMP)
- HDU 1711 Number Sequence (kmp)
- HDU 1711 Number Sequence(kmp模板)
- HDU 1711 Number Sequence(kmp专题)
- 2072Count(foj)
- 1002 hdu (高精度)
- Common Subsequence(hdu 1159)
- 最长公共子序列
- Dijkstra算法(单源最短路径)
- hdu(Number Sequence 1711)kmp
- hdu1025(最长上升子序列)
- Monkey and Banana hdu(1069)
- 报错:Link of class 'Lcom/.../PersistentConnectionListener;' failed ...VFY: unable to resolve new-insta
- A Problem With Fibonacci Sequence
- nginx常见错误---持续更新
- Similar Word
- The Frog’s Games(hdu 4004)
- hdu1003