BZOJ 3620: 似乎在梦中见过的样子
似乎在梦中见过的样子....
一道水题调了这么久,还半天想不出来怎么 T 的...佩服自己(果然蒟蒻)
这题想想 KMP 但是半天没思路瞟了一眼题解发现暴力枚举起始点,然后 KMP
如图:

O( n2 )能过啊!!! (╯‵□′)╯︵┻━┻
代码如下:
//by Judge
#include<cstring>
#include<cstdio>
using namespace std;
const int M=2e4+111;
int n,k,res;
int nxt[M]; char s[M];
int main(){
scanf("%s%d",s+1,&k),n=strlen(s+1);
for(int t=1,i,j;t<=n-(k<<1);++t){
for(i=1;i<=t;++i) nxt[i]=t-1; //这里不加等着 T 飞吧
for(i=t+1,j=t-1;i<=n;++i){
while(j^t-1 && s[i]!=s[j+1]) j=nxt[j];
if(s[i]==s[j+1]) ++j; nxt[i]=j;
} //nxt 数组是要先预处理的,然后才能处理答案
for(i=t+1,j=t-1;i<=n;++i){
while(j^t-1 && s[i]!=s[j+1]) j=nxt[j];
if(s[i]==s[j+1]) ++j;
while(j-t+1>=i-j) j=nxt[j]; //题目中的 B 没了,跳向 nxt
if(j-t+1>=k) ++res; //长度满足就累加答案
}
} printf("%d\n",res); return 0;
}
讲讲怎么,啊不,是为什么会 T 飞 。 看 RP ....
emmmm 其实。。。我一开始觉得nxt 数组是没问题的,每次都会更新,不用初始化啊。然后...智障的发现 i 的 nxt 指针是上次循环剩下来的...FAQ 于是愉快 T 飞
BZOJ 3620: 似乎在梦中见过的样子的更多相关文章
- [BZOJ 3620] 似乎在梦中见过的样子 【KMP】
题目链接:BZOJ - 3620 题目分析 这道题使用 KMP 做 O(n^2) 的暴力就能过. 首先,我们依次枚举字串左端点 l ,然后从这个左端点开始向后做一次 KMP. 然后我们枚举右端点 r ...
- bzoj 3620 似乎在梦中见过的样子(KMP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3620 [题意] 给定一个字符串,统计有多少形如A+B+A的子串,要求A>=K,B ...
- bzoj 3620: 似乎在梦中见过的样子
Description "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回 ...
- BZOJ.3620.似乎在梦中见过的样子(KMP)
题目链接 /* 896kb 6816ms A+B+A是KMP的形式,于是固定左端点,对于每个位置i,若fail[i]所能到的点k中(k=fail[fail[fail[...]]]),有满足len(l~ ...
- BZOJ 3620: 似乎在梦中见过的样子 [KMP 暴力]
和我签订契约,成为魔法少女吧 题意:求所有形似于A+B+A 的子串的数量 , 且len(A)>=k,len(B)>=1 位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一 ...
- 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
3620: 似乎在梦中见过的样子 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 755 Solved: 445 Description “Madok ...
- 【kmp】似乎在梦中见过的样子
参考博客: BZOJ 3620: 似乎在梦中见过的样子 [KMP]似乎在梦中见过的样子 题目描述 「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约. 这是M ...
- 【BZOJ3620】似乎在梦中见过的样子 KMP
[BZOJ3620]似乎在梦中见过的样子 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个 ...
- BZOJ_3620_似乎在梦中见过的样子_KMP
BZOJ_3620_似乎在梦中见过的样子_KMP Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka ...
随机推荐
- Web API中的路由(一)——约定路由
一.Web API中的路由概念 路由的作用用一句话说明:通过request的uri找到处理该请求的Controller,Action,以及给Action的参数赋值. 一些路由的基本概念: route: ...
- Sqlserver中的索引
一.什么是索引及索引的优缺点 1.1 索引的基本概念 数据库索引,是数据库管理系统中一个排序的数据结构,用来协助快速查询数据库表中数据. 简单理解索引就是一个排好顺序的目录,设置了索引就意味着进行了 ...
- .net 数据绑定gridview 和Repeater 序号,Container.ItemIndex
gridview <asp:TemplateColumn HeaderText="编号"> <ItemTemplate> &l ...
- springMVC下载中文文件名乱码【原】
重点就在于添加 "attachment;filename*=utf-8'zh_cn'" + fileName //遇到的现象是,下载含有中文文件名的文件时,能获取到文件,但是使用 ...
- 原生JavaScript运动功能系列(三):多物体多值运动
多物体同时出发运动函数实现 多属性同步运动变化实现 一.多物同时触发运动函数实现 前面两个动画示例基本理解了动画的核心:位置变化和速度变化,操作的核心就是定时器分段叠加属性值.但是动画还是基于单个元素 ...
- Java Service Wrapper 使用
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sinat_26279177/article/details/70807173 1 简介 ...
- [leetcode-129] 求根到叶子节点数字之和
(1AC) 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到叶子节 ...
- tedu训练营day04
1.猜拳:import randomlist = ['石头','剪刀','布']y = input('''(0) 石头(1) 剪刀(2) 布请出拳(0/1/2):******************* ...
- 开源框架.netCore DncZeus学习(五)下拉树的实现
千里之行,始于足下,先从一个小功能研究起,在菜单管理页面有一个下拉树,先研究下它怎么实现的 1.先找到menu.vue页面 惯性思维先搜索请选择三个字,原来是动态生成的 再向上找DropDown组件, ...
- ASP.NET MVC利用PagedList分页(一)
前几天看见博客园上有人写ASP.NET MVC的分页思想,这让我不禁想起了PagedList.PagedList是NuGet上提供的一个分页的类库,能对任何IEnumerable<T>进行 ...