[HDU1711]KMP模板
解题关键: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", ...)和printf("%I64d", ...).
不支持"%lld"是因为MinGW下的GCC和G++使用的msvcrt.dll动态链接库并不支持C99标准.
根据ISO C++标准,在G++下,main函数的返回值必须是int,否则将会导致Compile Error(编译错误)的判答
3、G++/GCC使用scanf、printf时注意引用<stdio.h>,只引用<iostream>不识别
#include<bits/stdc++.h>
#define N 1000002
using namespace std;
typedef long long ll;
int Next[N];
int s[N],t[N];
int slen,tlen;
int n,m;
void getNext(){
int i=,j=-;
Next[]=-;
while(i<tlen){
if(j==-||t[i]==t[j]) Next[++i]=++j;
else j=Next[j];
}
}
int kmp(){
getNext();
int i=,j=;
while(i<slen&&j<tlen){
if(j==-||s[i]==t[j]) ++i,++j;
else j=Next[j];
}
if(j==tlen) return i-j+;
else return -;
}
int main(){
ios::sync_with_stdio();
int tt;
cin>>tt;
while(tt--){
int n,m;
cin>>n>>m;
for(int i=;i<n;i++){
cin>>s[i];
}
for(int i=;i<m;i++){
cin>>t[i];
}
slen=n;
tlen=m;
cout<<kmp()<<endl;
}
}
#include<bits/stdc++.h>
#define N 1000000
using namespace std;
typedef long long ll;
char s[N],t[N];
int Next[N];
int slen,tlen;
void getNext(){
int i=,j=-;//注意写next数组时j为-1
Next[]=-;
while(i<tlen){
if(j==-||t[i]==t[j]) Next[++i]=++j;
else j=Next[j];
}
}
int kmp_index(){
getNext();
int i=,j=;
while(i<slen&&j<tlen){
if(j==-||s[i]==t[j]) i++,j++;
else j=Next[j];
}
if(j==tlen) return i-j;
else return -;
}
int kmp_count(){
int ans=,i=,j=;
getNext();
for(i=;i<slen;i++){
while(j>&&s[i]!=t[j]) j=Next[j];
if(s[i]==t[j]) j++;
if(j==tlen){
ans++;
j=Next[j];
}
}
return ans;
}
[HDU1711]KMP模板的更多相关文章
- hdu 1686 KMP模板
// hdu 1686 KMP模板 // 没啥好说的,KMP裸题,这里是MP模板 #include <cstdio> #include <iostream> #include ...
- Oulipo HDU 1686 KMP模板
题目大意:求模式串在主串中的出现次数. 题目思路:KMP模板题 #include<iostream> #include<algorithm> #include<cstri ...
- KMP模板(bin)
KMP模板 主要是kuangbin的模板,之后加了一点我的习惯和理解. kmpN() 作用:构造next数组 参数:模式串,模式串长度 kmpC() 作用:返回模式串在主串中出现的次数(可重复) 参数 ...
- HDU 1711 - Number Sequence - [KMP模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Time Limit: 10000/5000 MS (Java/Others) Memory L ...
- HDU 1711 Number Sequence(KMP模板)
http://acm.hdu.edu.cn/showproblem.php?pid=1711 这道题就是一个KMP模板. #include<iostream> #include<cs ...
- 剪花布条---hdu2087(kmp模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 kmp模板题: #include <cstdio> #include <cst ...
- Oulipo----poj3461(kmp模板)
题目链接:http://poj.org/problem?id=3461 和 减花布条 的题对比一下: 求s2中s1的个数kmp模板: #include<stdio.h> #include& ...
- kmp模板 && 扩展kmp模板
kmp模板: #include <bits/stdc++.h> #define PB push_back #define MP make_pair using namespace std; ...
- kuangbin专题16B(kmp模板)
题目链接: https://vjudge.net/contest/70325#problem/B 题意: 输出模式串在主串中出现的次数 思路: kmp模板 在 kmp 函数中匹配成功计数加一, 再令 ...
随机推荐
- PHP-内嵌式语言(转)(未看)
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写.PHP 是一种内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行 ...
- Linux服务器上的tomcat中部署web项目
首先了解一下下面几个概念,讲得不太准确:1.JVMJVM是class以及jar(实际上就是很多个class压缩在一起)的运行环境,特征就是java和javaw命令,通过这两个命令,你可以执行class ...
- zabbix实现mysql数据库的监控(四)
前面介绍的内容都是用第三方开发好的插件进行mysql监控的,可能有些我们关心的监控内容并不在其中,这时一种常用的方法就是定义我们自己的脚本并将它整合到zabbix中,从而在原有监控的基础上进行有力的补 ...
- 【Flask】Sqlalchemy 增删该查操作
### sqlalchemy 增删改查操作, 通过session来进行操作. # coding:utf-8 # Author: liangjun. from sqlalchemy import cre ...
- Maven项目结构
maven项目主体结构: 另外,Eclipse新建项目时会生成.project..classpath及.settings目录下的文件,这些文件用于描述一个Eclipse项目, 接下来做一个简要的解析: ...
- HDU OJ 2159 FATE
#include <stdio.h> #include <string.h> ][] ; ]; //»ñµÃ¾Ñé ]; //»¨·ÑµÄÈÌÄÍ¶È int main() ...
- java 获取访问主机的ip地址
Java的api的说法: getHeader public java.lang.String getHeader(java.lang.String name) Return the first val ...
- Python- and & or 的短路原则
条件1 and 条件2 条件1 or 条件2 短路原则 对于and 如果前面的第一个条件为假,那么这个and前后两个条件组成的表达式的计算结果就一定为假,第二个条件就不会被计算 对于or 如果前面的第 ...
- PostgreSQL 与 MySQL 相比,优势何在?【转】
最近看到PostgreSQL话题比较多,就搜索了一下它与mysql的对比作者:知了链接:http://www.zhihu.com/question/20010554/answer/74037965来源 ...
- delphi数据库的备份及还原
实例应用1: //备份procedure TF_DataBaseBackUp.Btn_bfClick(Sender: TObject); var i:integer; begin if SaveDia ...