hdu1711 KMP】的更多相关文章

#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…
解题关键:1.直接套kmp模板即可,注意最后输出的位置,需要在索引的位置+1. 2.next用作数组名在oj中会编译错误, 3.选用g++,只有g++才会接受bits/stdc++.h OJ中g++和c++的区别: 1.输出double类型时,如果采用G++提交,scanf采用%lf,printf采用%f,否则会报错 2.使用GCC/G++的提醒: 对于64位整数, long long int 和 __int64 都是支持并且等价的.但是在读和写的时候只支持scanf("%I64d",…
Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17971    Accepted Submission(s): 7854 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b…
Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 24587    Accepted Submission(s): 10436 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1],…
题意:给你两个长度分别为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>…
题意 找到子串在母串出现的第一个位置 解法 裸的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]&…
Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 40053    Accepted Submission(s): 16510 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1],…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 思路:kmp模板,注意用scanf,不然超时. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; int a[maxn],b[maxn],p[maxn],n,m; void pre() { int i,j; ,j=;i<m;i++) { &&b…
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1711 题目: 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 m…