HDU5918【KMP大法好,虽然我不会】
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX=1000010;
int n,m;
int a[MAX],b[MAX];
int nextval[MAX];
LL ans;
void get_next(int b[],int m)
{
int i=0;
nextval[0]=-1;
int j=-1;
while(i<m)
{
if(j==-1||b[i]==b[j])
{
++i;
++j;
// if(b[i]==b[j])
// nextval[i]=nextval[j];
// else
nextval[i]=j;
}
else
j=nextval[j];
}
}
int KMP(int a[],int n,int b[],int m,int nextval[],int pos,int p)
{
int i=pos;
int j=0;
while(i<n)
{
if(j==-1||a[i]==b[j])
{
i+=p;
j++;
if(j==m)
{
j=nextval[j];
ans++;
}
}
else
j=nextval[j];
}
}
int main()
{
int t,i,j;
int cas=1;
scanf("%d",&t);
while(t--)
{
int p;
ans=0;
scanf("%d%d%d",&n,&m,&p);
for(i=0; i<n; ++i)
scanf("%d",&a[i]);
for(j=0; j<m; ++j)
scanf("%d",&b[j]);
get_next(b,m);
// for(i=0; i<m; i++)
// printf("%d ",nextval[i]);
for(i=0;i<p;i++)
{
if(i+(m-1)*p>=n)
break;
KMP(a,n,b,m,nextval,i,p);
}
printf("Case #%d: %lld\n",cas++,ans);
}
return 0;
}
HDU5918【KMP大法好,虽然我不会】的更多相关文章
- HDU5918(KMP)
Sequence I Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 2018.09.18 atcoder Best Representation(kmp)
传送门 思路简单不知为何调试了很久. 显然要么分成n个(所有字符相同),要么分成1个(原字符串无循环节),要么分成两个(有长度至少为2的循环节). 一开始以为可以直接hash搞定. 后来wa了几次之后 ...
- [LeetCode] Add Bold Tag in String 字符串中增添加粗标签
Given a string s and a list of strings dict, you need to add a closed pair of bold tag <b> and ...
- 「UVA1328」Period 解题报告
English题面 题意: 给你一个长度为n的字符串,依次取字符串前i个(前缀),如果前缀由k(k>0)个相同真子串构成,那么输出i和k 直到n为0结束,每组数据后要有一行空白 思路: KMP+ ...
- HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Hash大法
内容参考<算法竞赛进阶指南> 之前集训的时候听老师讲过,字符串题目中,hash一般不是正解,但是是一个优秀的暴力,可以拿比较多的部分分. hash涉及内容很多,这里只讨论字符串hash 可 ...
- KMP——从入门到不会打题
KMP——从入门到不会打题 前言 如果你不了解哈希,建议先观看本蒟蒻的另一篇博客,对哈希有一定的理解 哈希大法吼 KMP算法,别名烤馍片或者看毛片,由烤馍片男子天团三位神犇同时发现的一种强大的单模 ...
- Connect() 2016 大会的主题 ---微软大法好
文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...
- KMP算法求解
// KMP.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using namespac ...
随机推荐
- JS中小数如何转化为百分数并能四舍五入
<script type="text/javascript">//n表示百分数保留的位数 function toPercent(n){ n = n || 2; retu ...
- iOS9新特性之泛型
iOS9新特性之泛型 作用:限制类型 好处:1.提高开发规范,减少程序员之间的交流 2.通过集合取出来的对象,直接当作泛型对象使用,可以直接使用点语法(id类型不能使用点语法) 使用场景: 1.在集 ...
- Hibernate的基本开发流程
一.Hibernate开发的基本流程 二.Hibernate开发的环境搭建 1.引入Hibernate核心包以及Hibernate依赖包即可.可以在Hibernate目录下的\lib\required ...
- git文章列表
关于gitlab默认clone协议 Git实现从本地加入项目到远程仓库 翻翻git之---一个简单的标签控件 LabelView (随手发了两张小宝宝的玩耍照) id=1125" targe ...
- MD5 字符串问题
早上来工位,大家再聊md5,无意中发现网上有个人提出个问题:研究了一下,挺有意思 有个串,通过各种办法得到的值不完全一样,下面请看细节: 假设这个字符串是 “ssss"我用的第一个办法应该是 ...
- Nodejs下如何判断文件夹的存在以及删除文件夹下所有的文件
代码如下: var folder_exists = fs.existsSync('./cache'); if(folder_exists == true) { var dirList = fs.rea ...
- VK Cup 2012 Qualification Round 1 E. Phone Talks —— DP
题目链接:http://codeforces.com/contest/158/problem/E E. Phone Talks time limit per test 3 seconds memory ...
- Appium——adb 启动问题Invalid argument: cannot open transport registration socketpair could not read ok from ADB Server failed to start daemon * error: cannot connect to daemon
adb启动问题:Invalid argument: cannot open transport registration socketpair could not read ok from ADB S ...
- java后台获取cookie里面值得方法
String admissionNo = ""; //得到所有的cookies Cookie[] cookies = this.getRequest().getCookies(); ...
- codeforces 652C C. Foe Pairs(尺取法+线段树查询一个区间覆盖线段)
题目链接: C. Foe Pairs time limit per test 1 second memory limit per test 256 megabytes input standard i ...