KMP——BZOJ3670/Luogu2375 [Noi2014]动物园
来源:互联网 发布:购物软件哪个好 编辑:程序博客网 时间:2024/05/31 19:56
http://www.lydsy.com/JudgeOnline/problem.php?id=3670
https://www.luogu.org/problem/show?pid=2375
洛谷有分点信息真好。。。(用多了不好不利于自身提高)
标算Kmp,第一次写渣了BZOJ只有提示WA洛谷一测爆蛋
这题的主要坑点在于限制后缀与前缀不重叠,其他和普通的Kmp并没有什么本质区别
这个其实只要加一个限制条件判断一下就好了
还有一个坑点,处理限制重叠要与原来的分开做,否则变量指针j会出问题
意思就是说要分两个循环,我一开始一个循环就炸了
还有一个坑点,题目里面说要求这样的前缀有多少,我一开始看成了求最大前缀QAQ
所以还要再多开一个数组num。。。
还有一个坑点……
反正处处是坑
#include<bits/stdc++.h>using namespace std;int nex[1000001],l1,num[1000001]={0};char a[1000001];int main(){ long long ans; int n;scanf("%d",&n); while(n--){ scanf("%s",a+1); l1=strlen(a+1); int j=0;long long ans=1; memset(num,0,sizeof num); num[1]=1;ans=1; for(int i=2;i<=l1;i++){ while(j&&a[i]!=a[j+1])j=nex[j]; if(a[i]==a[j+1])j++; nex[i]=j;num[i]=num[j]+1; } j=0; for(int i=2;i<=l1;i++){ while(j&&a[i]!=a[j+1])j=nex[j]; if(a[i]==a[j+1])j++; while(j&&j>i/2)j=nex[j]; ans=ans*(num[j]+1)%1000000007; } printf("%lld\n",ans); } return 0;}
1 0
- KMP——BZOJ3670/Luogu2375 [Noi2014]动物园
- 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树】
- bzoj3670 [noi2014] 动物园(kmp改编)
- 【KMP,next树】BZOJ3670 [Noi2014]动物园
- 461. Hamming Distance
- JS 实现审核流程状态的动态显示
- 【最大子段和】SDUT 3100 动态规划?
- ajax的traditional属性
- Fragment生命周期(add,replace,息屏等情况)
- KMP——BZOJ3670/Luogu2375 [Noi2014]动物园
- QT多线程中的互斥与同步
- JZOJ5012. 远行
- rxjava2 结合retrofit2进行业务封装
- 关于函数模版编译出现链接错误
- Shell 教程
- WebService代码
- Java中有关this的一个问题
- MongoDB实战