HDOJ-1711(KMP算法)
Number Sequence
HDOJ-1711
1.这里使用的算法是KMP算法,pi数组就是前缀数组。
2.代码中使用到了一个技巧就是用c数组看成是复合字符串,里面加一个特殊整数位-1000006,因为它永远不会出现在数组中。
3.额外需要注意的就是,需要加快速输入输出语句,因为涉及到的数据量有点大,所以会超时,当然,也可以选用scanf也可以。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
int a[1000006],b[10004];
int pi[1000006];
int c[1010010];
void Pi(int len){
    memset(pi,0,sizeof(pi));
    int n=len;
    pi[0]=0;
    for(int i=1;i<n;i++){
        int j=pi[i-1];
        while(j>0&&c[i]!=c[j]){
            j=pi[j-1];
        }
        if(c[i]==c[j])
            j++;
        pi[i]=j;
    }
}
int main(){
    ios::sync_with_stdio(false);//不加这两条语句会超时
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        cin>>n>>m;
        int a1,b1;
        for(int i=0;i<n;i++){
           cin>>a[i];
           c[i]=a[i];
        }
        for(int j=0;j<m;j++){
            cin>>b[j];
            c[j]=b[j];
        }
        c[m]=-1000006;
        for(int i=m+1;i<n+m+1;i++){
           c[i]=a[i-m-1];
        }
        Pi(m+n+1);
        int ans=-1;
        for(int i=m+1;i<n+1+m;i++){
            //cout<<pi[i]<<endl;
            if(pi[i]==m){
                ans=i-(m-1)-(m+1);
                ans++;
                break;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
												
											HDOJ-1711(KMP算法)的更多相关文章
- hdu 1711 KMP算法模板题
		
题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串 ...
 - HDU 1711 Number Sequence (字符串匹配,KMP算法)
		
HDU 1711 Number Sequence (字符串匹配,KMP算法) Description Given two sequences of numbers : a1, a2, ...... , ...
 - hdu 3336:Count the string(数据结构,串,KMP算法)
		
Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
 - Rabin_Karp(hash) HDOJ 1711 Number Sequence
		
题目传送门 /* Rabin_Karp:虽说用KMP更好,但是RK算法好理解.简单说一下RK算法的原理:首先把模式串的哈希值算出来, 在文本串里不断更新模式串的长度的哈希值,若相等,则找到了,否则整个 ...
 - 关于KMP算法的理解
		
上次因为haipz组织的比赛中有道题必须用到KMP算法,因此赛后便了解了下它,在仔细拜读了孤~影神牛的文章之后有种茅塞顿开的感觉,再次ORZ. 附上链接http://www.cnblogs.com/y ...
 - 【面向打野编程】——KMP算法入门
		
一.问题 咱们先不管什么KMP,来看看怎么匹配两个字符串. 问题:给定两个字符串,求第二个字符串是否包含于第一个字符串中. 为了具体化,我们以 ABCAXABCABCABX 与 ABCABCABX为例 ...
 - 运用kmp算法解决的一些问题的简单题解
		
学习kmp算法我最后是看的数据结构书上的一本教材学会的..我认为kmp相对于普通的BF算法就是避免了非常多不必要的匹配.而kmp算法的精髓自然就在于next数组的运用...而next数组简而言之就是存 ...
 - KMP算法(——模板习题与总结)
		
KMP算法是一种改进的模式匹配算法,相比于朴素的模式匹配算法效率更高.下面讲解KMP算法的基本思想与实现. 先来看一下朴素模式匹配算法的基本思想与实现. 朴素模式匹配算法的基本思想是匹配过程中如果该位 ...
 - 算法笔记--KMP算法 && EXKMP算法
		
1.KMP算法 这个博客写的不错:http://www.cnblogs.com/SYCstudio/p/7194315.html 模板: next数组的求解,那个循环本质就是如果相同前后缀不能加上该位 ...
 - hdu 1358:Period(KMP算法,next[]数组的使用)
		
Period Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
 
随机推荐
- 【noi 2.6_666】放苹果 & 【noi 2.6_8467】鸣人的影分身(DP)
			
这题其实在2.6前面的专题也有出现过,我还以为我有写,结果发现,并没有.于是就现在写了.这2题其实重复了......我就按放苹果的来说. 题意:把N个苹果放在M个盘子里,允许有的盘子空着不放,问共有多 ...
 - hdu1313 Round and Round We Go (大数乘法)
			
Problem Description A cyclic number is an integer n digits in length which, when multiplied by any i ...
 - hdu1828 Picture(线段树+扫描线+矩形周长)
			
看这篇博客前可以看一下扫描线求面积:线段树扫描线(一.Atlantis HDU - 1542(覆盖面积) 二.覆盖的面积 HDU - 1255(重叠两次的面积)) 解法一·:两次扫描线 如图我们可以 ...
 - Codeforces Round #670 (Div. 2)  C. Link Cut Centroids  (dfs,树)
			
C. Link Cut Centroids Fishing Prince loves trees, and he especially loves trees with only one centro ...
 - Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本
			
Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本 前言 序言 再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点. 适合阅读人群 J ...
 - MySQL 事务日志
			
重做日志(Redo log) 重做日志(Redo log),也叫做前滚日志,存放在如下位置,轮询使用,记录着内存中数据页的变化,在事务 ACID 过程中,主要实现的是 D(Durability)的作用 ...
 - DDL 数据定义语言
			
目录 创建数据库(CREATE) 删除数据库(DROP) 修改数据库(ALTER) 创建数据表(CREATE) 数据表的数据属性 数据类型属性(Type) 其他属性(Null,Key,Default, ...
 - Linux自带神器logrotate详解
			
Linux自带神器logrotate详解 散尽浮华 运维 3天前 作者:散尽浮华 链接:https://www.cnblogs.com/kevingrace/p/6307298.html 对于 L ...
 - Kotlin 入门教程
			
Kotlin 入门教程 Android / Java https://developer.android.com/kotlin?hl=zh-cn 使用 Kotlin 开发 Android 应用 使用 ...
 - Gatsby Themes
			
Gatsby Themes React & SSR gatsby-config.js refs https://www.gatsbyjs.com/docs/themes/ https://ww ...