hdu1711
来源:互联网 发布:java如何写接口 编辑:程序博客网 时间:2024/06/08 11:35
kmp最最最基础的水题。
先说下题意:给你两个序列a, b。问你a中是否存在b,若存在输出在a中b出现的首字母的位置(若有多个b,输出第一个b)。若不存在输出-1。
直接用kmp就秒A了。
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#define INF 0x3f3f3f3f#define mmaxn 10000+10#define nmaxn 1000000+10using namespace std;int n, m;int y[nmaxn], x[mmaxn], nex[mmaxn];void get_nex(int *x, int m, int *nex){int i, j;j = nex[0] = -1;i = 0;while (i < m){while (j != -1 && x[i] != x[j]) j = nex[j];nex[++i] = ++j;}}int kmp_count(int *x, int m, int *y, int n){int i, j, ans;i = j = ans = 0;get_nex(x, m, nex);while (i < n){while (j != -1 && y[i] != x[j]) j = nex[j];++j; ++i;if (j >= m) return i - m + 1;}return -1;}int main(){int cas;scanf("%d", &cas);while (cas--){scanf("%d %d", &n, &m);for (int i = 0;i < n;i++) scanf("%d", &y[i]);for (int i = 0;i < m;i++) scanf("%d", &x[i]);memset(nex, 0, sizeof(nex));int ans = kmp_count(x, m, y, n);printf("%d\n", ans);}return 0;}
0 0
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- hdu1711
- kmp hdu1711
- hdu1711 kmp
- hdu1711(kmp)
- HDU1711-KMP
- 控件高度与宽度设置问题
- URAL - 1158 Censored! AC自动机+dp
- svn Server的安装部署基于linux 的ubuntu系统
- php中常用的数组操作
- View 的 Measure 过程
- hdu1711
- IOS-FMDB那些事儿
- Java 文件、文件夹权限修改
- 237. Delete Node in a Linked List
- selenium自动化测试资源整理(含所有版本chrome、chromedriver、firefox下载链接)
- memcpy函数越界分析
- myeclipse schema xml提示
- 客户端高性能组件化框架React简介、特点、环境搭建及常用语法
- zz分享一些经验