hdu2087kmp模板练习
2024-10-09 00:09:26
题目网址:http://icpc.njust.edu.cn/Problem/Hdu/2087/
代码:
#include<bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
typedef long long ll;
typedef unsigned long long ull;
#define pf printf
#define mem(a,b) memset(a,b,sizeof(a))
#define prime1 1e9+7
#define prime2 1e9+9
#define pi 3.14159265
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define scand(x) scanf("%llf",&x)
#define f(i,a,b) for(int i=a;i<=b;i++)
#define scan(a) scanf("%d",&a)
#define dbg(args) cout<<#args<<":"<<args<<endl;
#define inf 0x3f3f3f3f
#define maxn 100010
int n,m,t;
char s[maxn],p[maxn],nxt[maxn];
void getnxt()
{
int plen=strlen(p);
int i=-,j=;
nxt[]=-;
while(j<plen)
{
if(i==-||p[i]==p[j])
{
i++,j++;
if(p[i]==p[j])nxt[j]=nxt[i];
else nxt[j]=i;
}
else i=nxt[i];
}
}
int kmp()
{
int plen=strlen(p);
int slen=strlen(s);
int j=,i=;
int cnt=;
while(i<slen)
{
if(j==-||s[i]==p[j])i++,j++;
else j=nxt[j];
if(j==plen)
{
j=,cnt++;
}
}
return cnt;
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
std::ios::sync_with_stdio(false);
while(scanf("%s",s))
{
if(!strcmp(s,"#"))break;
scanf(" %s",p);
getnxt();
pf("%d\n",kmp());
}
}
最新文章
- OLE DB Command transformation 用法
- C# 只移除最后一个字符
- 微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案
- git分支管理策略
- linux mysql查看安装信息
- hduoj-----(2896)病毒侵袭(ac自动机)
- MongoDB数据库安装及配置环境终极教程(windows10系统)
- webpack+react搭建环境
- samba、ftp和ssh服务
- 编写一个lambda,接受两个int,返回它们的和
- Hexo之部署github
- STL Deque 容器
- Java spring mvc多数据源配置
- 详谈JavaScript 匿名函数及闭包
- git学习——<;三>;git操作
- Linux基础之-网络配置,主机名设置,ssh登陆,scp传输
- PHP下载APK文件
- kali2.0下配置Metasploit+postgresql链接
- python - 判断是否为正小数和正整数
- 微信公众号php从0开发,包括功能(自定义菜单,分享)
热门文章
- Soldier and Badges
- 杂记:VMware中为mac虚拟机扩容
- linux下查找文件及查找包含指定内容的文件常用命令
- Leetcode 239题 滑动窗口最大值(Sliding Window Maximum) Java语言求解
- CSS中怎么设置元素水平垂直居中?
- 一道二叉树题的n步优化——LeetCode98validate binary search tree(草稿)
- go语言指南之映射练习
- 前端如何真正晋级成全栈:腾讯 Serverless 前端落地与实践
- [Cts-Verifier]waiver-Camera-ITS-Test
- overflow-y:auto/hidden/scroll和overflow-x:visible组合渲染异常