Number Sequence
2015-09-23 19:38
441 查看
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=92486#problem/A
Number Sequence
Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
Given two sequences of numbers : a[1], a[2], ...... , a
, 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
. 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
题意:在a串中找b串的位置,多个输出最小or输出-1
最简单kmp……wa哭N次,最后在大牛下终于1a
刘大大说要用函数……无论多短的代码
说的是
Number Sequence
Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit Status
Description
Given two sequences of numbers : a[1], a[2], ...... , a
, 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
. 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
题意:在a串中找b串的位置,多个输出最小or输出-1
最简单kmp……wa哭N次,最后在大牛下终于1a
#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define maxn 10008 int n, m, a[maxn*100], b[maxn], Next[maxn]; void getnext() { int j, k; j = 0; k = Next[0] = -1; while(j < m) { if(k == -1 || b[j] == b[k]) { j++; k++; Next[j] = k; } else k = Next[k]; } } void slove() { int j; j = 0; int ans = -1; for(int i = 0; i < n; ) // i 不该加就不要加,你用while多好……=。=|| { while(j == -1 || (a[i] == b[j] && i < n && j < m)) i++, j++; if(j == m) { ans = i - j + 1; break; } j = Next[j]; } printf("%d\n", ans); } 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]); getnext(); slove(); } return 0; }
刘大大说要用函数……无论多短的代码
说的是
相关文章推荐
- request.getInputStream中文乱码解决方案
- iOS UITextView 光标问题
- IOS UILabel
- 【转】有了Auto Layout,为什么你还是害怕写UITabelView的自适应布局?
- 自定义UITableViewCell 上的多个按钮点击事件处理
- UICollectionView基础
- quick减少包体
- 传感器 -UIAccelerometer
- iOS-Core-Animation-Advanced-Techniques(六)
- 数莓派kernel building官方文档
- /res/values 目录详解
- DRUID连接池的使用——为监控而生的DB池[转]
- CYC-非常炫酷的UIView动画-02
- NGUI控件
- UI 框架、ORM、权限系统
- easyui_layout折叠
- UITableView 获取多选,单选的内容
- UI的布局优化
- UITableView
- Building an AAR Library in Android Studio