luogu2375 动物园 (kmp)
首先求出fail数组,如果没有不重叠的限制的话,我们可以在求fail的时候递推出个数cnt[i]=cnt[fail[i]]+1(这个cnt是算上自己本身==自己本身的)
然后如果是要求不重叠的话,就是相当于一直跳fail,直到找到了一个长度不超过一半的fail,然后num[i]就是它
但如果直接暴力跳肯定是不行的
其实它跟求fail的时候是一样的,只要每次不重置那个指针,就把它当成在求fail一样往后匹配这一位,匹配完这一位再跳回到一半以下,就可以保证复杂度
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long int
using namespace std; const int M=1e9+,maxn=; char s[maxn];
int fail[maxn],fulcnt[maxn];
int len;
ll ans=; void getfail(){
int i,j,k;
fulcnt[]=;
for(i=,j=,k=;i<=len;i++){
while(j && s[j+]!=s[i]) j=fail[j];
while(k && s[k+]!=s[i]) k=fail[k];
if(s[j+]==s[i]) j++;
if(s[k+]==s[i]) k++;
fail[i]=j;
fulcnt[i]=fulcnt[j]+;
while(k&&k>i/) k=fail[k];
ans=(ans*(fulcnt[k]+))%M;
}
} int main(){
int t;
// freopen("testdata.in","r",stdin);
scanf("%d",&t);
for(;t;t--){
ans=;
scanf("%s",s+);
len=strlen(s+);
memset(fail,,sizeof(fail));
memset(fulcnt,,sizeof(fulcnt));
getfail();
printf("%lld\n",ans);
}
}
luogu2375 动物园 (kmp)的更多相关文章
- BZOJ-3670     动物园     KMP+奇怪的东西
		
YveH爷再刷KMP,DCrusher看他刷KMP,跟着两个人一块刷KMP... 3670: [Noi2014]动物园 Time Limit: 10 Sec Memory Limit: 512 MB ...
 - uoj #5. 【NOI2014】动物园 kmp
		
#5. [NOI2014]动物园 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/5 Description 近日 ...
 - bzoj 3670 动物园 - kmp - 动态规划
		
Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...
 - BZOJ3670:[NOI2014]动物园(KMP)
		
Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...
 - 【BZOJ3670】【NOI2014】动物园 [KMP][倍增]
		
动物园 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 近日,园长发现动物园中好吃懒做的动物 ...
 - 【NOI2014】动物园 - KMP
		
题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法. 某天, ...
 - BZOJ 3670: [Noi2014]动物园 [KMP]
		
求这玩意: 对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i] 对1,000,000,007取模的结果 n≤5,L≤1,00 ...
 - [NOI2014]动物园(kmp)
		
题目 https://www.luogu.org/problemnew/show/P2375 做法 查找多少个前缀与后缀配对,其实就是\(fail\)树的深度 而不可重叠,其实\(i\)不可用的,\( ...
 - BZOJ 3670 NOI2014 动物园 KMP+dp
		
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3670 题意概述:令num[i]表示字符串由1~i的字符形成的前缀中不相重叠的相同前后缀的数 ...
 
随机推荐
- 20155302《网络对抗》Exp4 恶意代码分析
			
20155302<网络对抗>Exp4 恶意代码分析 实验要求 •是监控你自己系统的运行状态,看有没有可疑的程序在运行. •是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工 ...
 - 20155311《网络对抗》Web基础
			
20155311<网络对抗>Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用了就kil ...
 - Android开发——Fragment知识整理(二)
			
0. 前言 Android开发中的Fragment的应用非常广泛,在Android开发--Fragment知识整理(一)中简单介绍了关于Fragment的生命周期,常用API,回退栈的应用等知识.这 ...
 - 阿里云Linux系统基线检查优化
			
1.用户权限配置文件的权限优化 描述:设置用户权限配置文件的权限 操作时建议做好记录或备份 chown root:root /etc/passwd /etc/shadow /etc/group /et ...
 - libgdx自制简易版Don't Touch The White Tile
			
Don't Toutch The White说来也奇快,本来没什么难的,但是在欧美ios榜上却雄踞榜首好长时间.即使是在国内,也很火,还真是想不通,谁能解释下,难道真是所谓的抓住了用户的G点,或是这些 ...
 - [LOJ#6033]. 「雅礼集训 2017 Day2」棋盘游戏[二分图博弈、匈牙利算法]
			
题意 题目链接 分析 二分图博弈经典模型,首先将棋盘二分图染色. 考虑在某个最大匹配中: 如果存在完美匹配则先手必败,因为先手选定的任何一个起点都在完美匹配中,而后手则只需要走这个点的匹配点,然后先手 ...
 - Android Studio Xposed模块编写(一)
			
1.环境说明 本文主要参考https://my.oschina.net/wisedream/blog/471292?fromerr=rNPFQidG的内容,自己实现了一遍,侵权请告知 已经安装xpos ...
 - SpringBoot整合Mybatis之进门篇
			
已经有好些日子没有总结了,不是变懒了,而是我一直在奋力学习springboot的路上,现在也算是完成了第一阶段的学习,今天给各位总结总结. 之前在网上找过不少关于springboot的教程,都是一些比 ...
 - jmeter分布式压力测试之添加压力机
			
前提:多台电脑可以互相ping通 1.jmeter的bin目录下的jmeter.properties配置文件里面remote_hosts添加测试机的 IP:端口号,用英文“,”逗号间隔例如:remot ...
 - Nuxeo 认证绕过和RCE漏洞分析(CVE-2018-16341)
			
简介 Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS).nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页 ...