BZOJ3670(Noi2014)[动物园]--KMP
来源:互联网 发布:大麦盒子刷机 网络限制 编辑:程序博客网 时间:2024/05/16 06:46
【链接】
bzoj3670
【解题报告】
好像题目自己说是KMP。。。
就只需要判断一下失配指针的位置是否超过长度一半就行了。
#include<cstdio>#define LL long longusing namespace std;const int maxn=1000005,tt=1000000007;int T,len,a[maxn],p[maxn];LL ans;char s[maxn];void Readc(){ char ch=getchar(); len=0; while (ch<'a'||ch>'z') ch=getchar(); while (ch>='a'&&ch<='z') s[++len]=ch,ch=getchar();}void Work(){ Readc(); ans=1; p[0]=p[1]=a[0]=0; a[1]=1; for (int i=2,k1=0,k2=0; i<=len; i++) { while (k1&&s[k1+1]!=s[i]) k1=p[k1]; if (s[k1+1]==s[i]) k1++; p[i]=k1; a[i]=a[k1]+1; while (k2&&s[k2+1]!=s[i]) k2=p[k2]; if (s[k2+1]==s[i]) k2++; while (k2>(i>>1)) k2=p[k2]; ans=(LL)ans*(a[k2]+1)%tt; } printf("%d\n",ans);}int main(){ freopen("3670.in","r",stdin); freopen("3670.out","w",stdout); scanf("%d",&T); while (T--) Work(); return 0;}
阅读全文
0 0
- bzoj3670: [Noi2014]动物园 KMP
- 【KMP】[Noi2014] bzoj3670 动物园
- [BZOJ3670][Noi2014]动物园 && KMP
- [BZOJ3670]NOI2014动物园|KMP
- bzoj3670 [Noi2014]动物园 kmp
- 【bzoj3670】[Noi2014]动物园 KMP
- bzoj3670 NOI2014 动物园 kmp
- BZOJ3670(Noi2014)[动物园]--KMP
- 【bzoj3670】【NOI2014】【动物园】【kmp+dp】
- bzoj3670 noi2014动物园(kmp)
- [BZOJ3670][Noi2014]动物园(KMP)
- BZOJ3670【NOI2014】动物园(KMP变形)
- [BZOJ3670][NOI2014]动物园(KMP)
- BZOJ3670 [Noi2014]动物园 【KMP计数】
- 【BZOJ3670】[Noi2014]动物园【KMP】【fail树】
- KMP——BZOJ3670/Luogu2375 [Noi2014]动物园
- bzoj3670 [noi2014] 动物园(kmp改编)
- 【KMP,next树】BZOJ3670 [Noi2014]动物园
- Python3实现163邮箱SMTP发送邮件
- FinTech4Good创始人张晓晨:全球区块链的产业应用趋势
- 进击的移动端:40G微信小程序开发教程(工具插件+视频教程)
- WEB页面_js代码中,数组数据转字符串 (idArray是数组)
- could not create the view:an unexpected exception was thrown
- BZOJ3670(Noi2014)[动物园]--KMP
- 51nod 1158 全是1的最大子矩阵 (单调栈) 详细图解
- SSM日期类型的转化
- How to refine C++ in a general way?
- 使用cURL作为HTTP请求媒介
- QT5 使用163邮箱发送邮件
- oracle 数据库表table
- CCF CSP 2014年12月第2题 Z字型扫描(模拟水题)
- 647. Palindromic Substrings