HDU 1711 Number Sequence (KMP)
来源:互联网 发布:2016电影采集网站源码 编辑:程序博客网 时间:2024/06/03 20:37
Number Sequence
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 22861 Accepted Submission(s): 9770
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
213 51 2 1 2 3 1 2 3 1 3 2 1 21 2 3 1 313 51 2 1 2 3 1 2 3 1 3 2 1 21 2 3 2 1
Sample Output
6-1
Source
HDU 2007-Spring Programming Contest
Recommend
lcy | We have carefully selected several similar problems for you: 1358 3336 1686 3746 1251
第一次利用kmp写题。。。
刚开始求next函数值时用了next数组,然后就一直CP..
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int n,m;int a[1000100],b[100100]; int ne[10010]; void getne(){int i,j;i=1;j=0;ne[1]=0;while(i<m){if(j==0||b[i]==b[j]){++i;++j;ne[i]=j;}elsej=ne[j];}}void KMP(){int i,j,ans;bool fafe=false; i=1;j=1;while(i<=n){ while (j>0&&a[i]!=b[j]) j=ne[j]; i++;j++; if (j==m+1) { fafe=true; ans=i-m; break; } } if (fafe) printf("%d\n",ans); else printf("-1\n"); }int main(){int t,i,j;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d",&a[i]); }for(i=1;i<=m;i++){scanf("%d",&b[i]);}getne();KMP();}return 0;}
0 0
- HDU 1711 Number Sequence(kmp)
- HDU 1711 Number Sequence (kmp)
- hdu 1711 Number Sequence--KMP
- hdu kmp 1711 Number Sequence
- HDU 1711 Number Sequence (KMP)
- HDU 1711Number Sequence(KMP)
- Hdu 1711 KMP Number Sequence
- HDU 1711 Number Sequence KMP
- [HDU 1711]Number Sequence[kmp]
- 【KMP】hdu 1711 Number Sequence
- 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)
- KMP & hdu 1711 Number Sequence
- hdu 1711 Number Sequence(kmp)
- hdu 1711 Number Sequence(kmp)
- 从文本文件中读取数据
- Date
- hdu 1398 Square Coins(母函数/完全背包)
- 运维开发详解
- 常用的正则表达式
- HDU 1711 Number Sequence (KMP)
- this关键字
- 关于IP地址
- 给定一本书,其中包含n页,计算出书的全部页码中用到了多少个数字0…9
- poj 2891 Strange Way to Express Integers 一元线性同余方程组
- Android项目之多功能新闻客户端(下)
- StarUML使用说明-指导手册
- 20161015
- 闭包