bzoj3620似乎在梦中见过的样子
题意:
给出一个字符串,要求求出形如A+B+A的子串数量,且lenA≥k,lenB≥1。字符串长度≤15000,k≤100,所以字符长度为小写字母。
题解:
第一次写kmp的题QAQ~这题利用的是fail函数的性质:若字符串s在位置x的fail函数f[x]不为0,则prefix(s+1,s+x)的长度为f[x]的前缀和长度为f[x]的后缀相同。因此枚举每个后缀为为j,对这个后缀做kmp,再递推一个令f[i]-j+1≥k且最小的f[i]为last[x](f[i]表示i=x; while(i>=后缀位)i=f[i]得到的所有f[i]),若last[x]-j小于等于(x-j)/2则子串(j,x)合法。讲的很乱,具体看代码。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#define inc(i,j,k) for(int i=j;i<=k;i++)
#define INF 0x3fffffff
using namespace std; char s[]; int l,k,next[],last[],ans;
int main(){
//freopen("in.txt","r",stdin);
scanf("%s",s+); l=strlen(s+); scanf("%d",&k); ans=;
inc(i,,l){
next[i]=i-; last[i]=INF;
inc(ii,i+,l){
int j=next[ii-]; while(j>=i&&s[ii]!=s[j+])j=next[j];
if(s[ii]==s[j+])next[ii]=j+;else next[ii]=j;
if(next[ii]-i+<k)last[ii]=INF;else{
last[ii]=min(last[next[ii]],next[ii]);
if(last[ii]-i+<=(ii-i)>>)ans++;//,printf("%d %d\n",i,ii);
}
}
}
printf("%d",ans); return ;
}
20160609
bzoj3620似乎在梦中见过的样子的更多相关文章
- BZOJ3620 似乎在梦中见过的样子(kmp)
不是很懂为什么数据范围要开的这么诡异,想到正解都不敢写.用类似NOI2014动物园的方法,对每个后缀求出类似next的数组即可. #include<iostream> #include&l ...
- 【kmp】bzoj3620: 似乎在梦中见过的样子
考察kmp理解题 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中 ...
- BZOJ3620: 似乎在梦中见过的样子(KMP)
Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了使 ...
- bzoj3620 似乎在梦中见过的样子
好久没有写过KMP了,今天写个KMP练练手.此题就是枚举左端点暴力,用KMP做到O(n^2) #include<cstdio> #include<cstring> using ...
- 【BZOJ3620】似乎在梦中见过的样子 KMP
[BZOJ3620]似乎在梦中见过的样子 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个 ...
- BZOJ 3620: 似乎在梦中见过的样子
似乎在梦中见过的样子.... 一道水题调了这么久,还半天想不出来怎么 T 的...佩服自己(果然蒟蒻) 这题想想 KMP 但是半天没思路瞟了一眼题解发现暴力枚举起始点,然后 KMP 如图: O( n2 ...
- 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
3620: 似乎在梦中见过的样子 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 755 Solved: 445 Description “Madok ...
- BZOJ_3620_似乎在梦中见过的样子_KMP
BZOJ_3620_似乎在梦中见过的样子_KMP Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka ...
- 【kmp】似乎在梦中见过的样子
参考博客: BZOJ 3620: 似乎在梦中见过的样子 [KMP]似乎在梦中见过的样子 题目描述 「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约. 这是M ...
随机推荐
- ado.net Web前端:关于JavaScript知识点的简单梳理
学习js:1.htmml2.cssjs+html+css == html5 js的组成:1).ecamscript ES是js的标准,js 是es 的实现2)文档对象模型(Document Objec ...
- SpringBoot 缓存工作原理
1. 自动配置类:CacheAutoConfiguration 2. 缓存的配置类: org.springframework.boot.autoconfigure.cache.GenericCache ...
- Spring Boot 系列
https://www.cnblogs.com/magicalSam/p/7189421.html
- git merge整理
========================================================== git bash merge 一.开发分支(dev)上的代码达到上线的标准后,要合 ...
- I/O格式化与运算符
I/O格式化与运算符 输出函数 Python3 - print() 在Python3中.print()的使用方法如下: >>> # ==== Python3 print() ==== ...
- Ubuntu k80深度学习环境搭建
英伟达驱动安装 英伟达驱动下载:https://www.nvidia.cn/Download/driverResults.aspx/135493/cn/ 由于是驱动的冲突,那么自然是要杀掉和显卡结合不 ...
- Python实用笔记 (9)高级特性——列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, ...
- django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2的最佳处理方法,亲测可用
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2 ...
- 第三方登陆---GITEE
第三方登陆QQ通行入口 https://www.cnblogs.com/Yangbuyi/p/13194007.html 呼~~~~ 应身边的同学要集成第三方登陆 gitee.github.qq登陆. ...
- Python3笔记005 - 2.2 保留字与标识符
第2章 python语言基础 python语法特点 保留字与标识符 变量 数据类型 运算符 输入和输出 2.2 保留字与标识符 2.2.1 保留字 查看python保留字 import keyword ...