题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

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

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

Problem solving report:

Description: 求第二个数组中的数字在第一个数组中出现的位置。
Problem solving: KMP。

Accepted Code:

#include <bits/stdc++.h>
using namespace std;
const int MAXM = 10005;
const int MAXN = 1000005;
int sa[MAXN], sb[MAXM], Next[MAXM];
void Get_Next(int m) {Next[0] = -1;int i = 0, j = -1;while (i < m) {if (~j && sb[i] != sb[j])j = Next[j];else Next[++i] = ++j;}
}
int KMP(int n, int m) {Get_Next(m);int i = 0, j = 0;while (i < n) {if (~j && sa[i] != sb[j])j = Next[j];else i++, j++;if (j >= m)return i - j + 1;}return -1;
}
int main() {int t, n, m;scanf("%d", &t);while (t--) {scanf("%d%d", &n, &m);for (int i = 0; i < n; i++)scanf("%d", sa + i);for (int i = 0; i < m; i++)scanf("%d", sb + i);printf("%d\n", KMP(n, m));}return 0;
}

HDU - Number Sequence(KMP)相关推荐

  1. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

  2. HDU 1711 -Number Sequence(KMP)

    题目 Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. Number Sequence (KMP的应用)

    个人心得:朴素代码绝对超时,所以要用到KMP算法,特意了解了,还是比较抽象,要多体会 Given two sequences of numbers : a11, a22, ...... , aNN, ...

  4. HDU_1711 Number Sequence(KMP)

    第一道kmp的题目,没想到纠结在上边这么多时间,也不知道哪错了,反正改着改着就对了... #include <iostream>#include <cstdio>using n ...

  5. 【HDU】1005 Number Sequence (有点可爱)

    http://acm.hdu.edu.cn/showproblem.php?pid=1005 A number sequence is defined as follows: f(1) = 1, f( ...

  6. HDU 1005 Number Sequence

    [题目]                                                   Number Sequence Time Limit: 2000/1000 MS (Jav ...

  7. HDU.1005 Number Sequence

    原题 HDU.1005 Number Sequence 分类 杂题 题意 给定一个数列{an}\left\{ a_n \right\}{an​}的前两项a1a_1a1​.a2a_2a2​,以及其递推公 ...

  8. 【HDU - 5014】Number Sequence(贪心构造)

    题干: There is a special number sequence which has n+1 integers. For each number in sequence, we have ...

  9. HDU - 5919 Sequence II——主席树+区间种类++逆序建树

    [题目描述] HDU - 5919 Sequence II [题目分析] 题目给定一个数组,每次查询一个区间,找出区间内不同数字的个数x,然后输出按出现顺序第x/2向上取整个数字的位置. 按照要求,我 ...

最新文章

  1. Windows7在Notepad++中配置Python+OpenCV
  2. 用Visio进行数据库建模、设计和实现
  3. 《几何与代数导引》习题1.38
  4. Spring Boot 2.0(三):Spring Boot 开源软件都有哪些?
  5. 2021春季每日一题 【week2 未完结】
  6. 不同虚拟机局域网Vlan之间访问
  7. 0自动转型到DBNull.Value引发的错误
  8. [设计模式] Javascript 之 观察者模式
  9. 平板android优化网络,Android版Firefox更新 针对平板设备优化
  10. cts测试之host_config.xml
  11. keras 多GPU训练,单GPU权重保存和预测
  12. mvn install跳过测试
  13. net core webAPI NOPI 导出Excel封装
  14. 村村响农村广播-盐池县农村IP广播案例
  15. es文件管理复制到fpt服务器,达人教你玩应用:ES文件浏览器之文件互传
  16. Unity ipad UI适配
  17. JavaScript几种继承方式
  18. 紫川歪传------------恶搞暴笑版
  19. 图片转文字怎么转?这些方法我只告诉你
  20. 信捷 XDH Ethercat 正负极限的设置

热门文章

  1. mysql期中考试题及答案_MySQL数据库考试题与答案
  2. 向量和矩阵的 1范数、2范数
  3. 使用 PowerDesigner 和 PDMReader 逆向生成 MySQL 数据字典
  4. 美国参议院或就网络中立进行表决
  5. 什么是财务数字化-数字化转型网
  6. 基于Zxing修改定位点(码眼)的颜色
  7. Pycharm卡顿解决
  8. vbox共享文件夹设置
  9. 手头有70万,刚需买房,早晚都要买,不如早点买
  10. markdown学习1:推荐的MarkDown在线编辑器 StackEdit