【bzoj3670】动物园 kmp
来源:互联网 发布:虚拟机上装linux 编辑:程序博客网 时间:2024/04/29 16:18
AC通道: http://www.lydsy.com/JudgeOnline/problem.php?id=3670
【题解】
首先kmp求出p数组,顺便用num数组记录当前匹配的方法数,然后再做一次类似于kmp的东西,具体看代码
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<ctime>#include<cmath>#include<algorithm>using namespace std;#define mod 1000000007typedef long long ll;ll T,n,ans,p[1000100],num[1000100];char ch[1000100];void kmp(){ num[1]=1; for(int i=2,j=0;i<=n;i++) { while(j&&ch[i]!=ch[j+1]) j=p[j]; if(ch[i]==ch[j+1]) j++; p[i]=j; num[i]=num[j]+1; } for(int i=2,j=0;i<=n;i++) { while(j&&ch[i]!=ch[j+1]) j=p[j]; if(ch[i]==ch[j+1]) j++; while(j*2>i) j=p[j];//如果重叠了,就往前找 ans=ans*(num[j]+1)%mod; }}int main(){ freopen("zoo.in","r",stdin); freopen("zoo.out","w",stdout); scanf("%lld",&T); while(T--) { scanf("%s",ch+1); ans=1; n=strlen(ch+1); kmp(); printf("%lld\n",ans%mod); } return 0;}
1 0
- bzoj3670: [Noi2014]动物园 KMP
- 【KMP】[Noi2014] bzoj3670 动物园
- [BZOJ3670][Noi2014]动物园 && KMP
- [BZOJ3670]NOI2014动物园|KMP
- bzoj3670 [Noi2014]动物园 kmp
- 【bzoj3670】[Noi2014]动物园 KMP
- 【bzoj3670】动物园 kmp
- bzoj3670 NOI2014 动物园 kmp
- BZOJ3670(Noi2014)[动物园]--KMP
- 【bzoj3670】【NOI2014】【动物园】【kmp+dp】
- bzoj3670 noi2014动物园(kmp)
- [BZOJ3670][Noi2014]动物园(KMP)
- 【BZOJ3670】【NOI 2014】动物园(KMP)
- BZOJ3670【NOI2014】动物园(KMP变形)
- [BZOJ3670][NOI2014]动物园(KMP)
- BZOJ3670 [Noi2014]动物园 【KMP计数】
- 【BZOJ3670】【codevs3319】动物园,KMP+时间优化
- 【BZOJ3670】[Noi2014]动物园【KMP】【fail树】
- 【HDU3949】XOR
- 【bzoj1834】[ZJOI2010]network 网络扩容
- Lucene开发实例(一般企业搜索平台完全够用全程)
- 【bzoj1602】牧场行走 lca
- spark sql中踩到的一个坑,自定义Udf会执行多次,即使在已经cache table的情况下
- 【bzoj3670】动物园 kmp
- 【bzoj1030】文本生成器 AC自动机+树型dp
- 【leetcode】463. Island Perimeter【E】
- 曹冲养猪 中国剩余定理
- 【HDU1573】X问题 中国剩余定理
- 【bzoj2818】Gcd 欧拉函数
- java自带线程池和队列详细讲解
- git笔记:一篇搞懂git是个什么玩意
- 【bzoj3667】Rabin-Miller算法 素数测试