Number Sequence
来源:互联网 发布:2017笔记本推荐 知乎 编辑:程序博客网 时间:2024/06/08 03:41
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.
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
6-1
KMP的模板题
#include <iostream>#include <cstdio>const int MAX=1e6+10;int a[MAX] , b[10010];int next[10010];int kmp(int n ,int m ){ int i = 0 , j =0; while( i < n) { if( j == -1 || a[i] == b[j]) { i++;j++;if(j == m) { return i-m+1;} } else { j = next[j]; } } return -1;}void getnext( int m){ int i= 0 , j = -1; next[0] = -1 ; while( i < m) { if( j == -1 || b[i] == b[j]) { i++; j++; next[i] = j; } else { j = next[j]; } } }int main(){ int t; scanf("%d",&t); while(t--) { int n , m; 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]); getnext(m); printf("%d\n",kmp(n , m));}return 0;}
阅读全文
0 0
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- Number Sequence
- python3--异常处理及习题
- 1858: [Scoi2010]序列操作
- 算法题/两个栈实现队列
- Hbase安装与使用
- 带涨跌箭头的柱形图
- Number Sequence
- 144. Binary Tree Preorder Traversal 【先序遍历 + 栈模拟递归】
- 滤波
- poj 3233 Matrix Power Series
- 数据库查询结果ResultSet类型 转 List类型
- java常用线性数据结构及用法
- 第二章:2.1 微分方程、差分方程求解(求解方法)
- CSS-为网站添加样式---第三系列
- 大数据早报:微信开放数据能力 谷歌出手大力整治窃取用户数据应用(8.16)