HDU1711】的更多相关文章

题意:给你两个长度分别为n(1 <= N <= 1000000)和m(1 <= M <= 10000)的序列a[]和b[],求b[]序列在a[]序列中出现的首位置.如果没有请输出-1. 这题用裸KMP算法O(N)水过- KMP算法的两个函数: Code(hdu1711): #include <stdio.h> #include <string.h> const int maxn = 1000005; const int maxm = 10005; int a…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU1711 题意概括 给T组数据,每组有长度为n和m的母串和模式串.判断模式串是否是母串的子串,如果是输出最先匹配完成的位置,否则输出-1. 题解 KMP裸题. 代码 #include <cstring> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cmath>…
#include<stdio.h> #include<string.h> #define maxn 1000010 int next[maxn],s[maxn],p[maxn]; int n,m; void getnext() { int j,k; k=-; j=; next[]=-; while(j<m) { ||p[j]==p[k]) { j++; k++; next[j]=k; } else k=next[k]; } } int kmp() { int i,j; get…
Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14563    Accepted Submission(s): 6392 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b…
贴代码,觉得带template的有一些大材小用……不过还是按自己风格写吧! /*******************************************************************************/ /* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux * Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) *…
题意 找到子串在母串出现的第一个位置 解法 裸的KMP 特别的地方 第一次不看模板自己敲的KMP #include<stdio.h> const int maxn=100000; const int MAXN=1000000; int next[maxn]; int S[MAXN]; int T[maxn]; int N,M; void get_next() { for(int i=2;i<=M;i++) { int p=i-1; while(T[next[p]+1]!=T[i]&…
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]…
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]…
题面 大致题意: 给定两个数列A,B,长度分别为N和M 求出 满足 Ak=B1 ,Ak+1=B2......Ak+M-1=Bm 的最小k值 如果有多个k值输出最小的一个 题解 KMP裸题 直接计算B数列的next值KMP匹配即可 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm&…
题意:给你T组数据,每组数据分别输入n,m和长度为n的数字数组,和长度为m的数字数组,问你长度为m的数组第一次出现在长度为n的数组的位置 解题思路:标准字符串匹配问题,一般用kmp解,拿来练hash #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; typedef long long ll; ; ; ; ; ll h[M…