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 ...
随机推荐
- VirtualBox虚拟机中安装XP系统
Windows XP是一款经典的操作系统,同时也是一款很老的操作系统,不过尽管如此,还是有一批用户在使用XP系统,所以发行一些软件的时候还是要测试在XP系统中能否运行,这时候我们就可以借助Virtua ...
- Linux 内核源代码根目录
1. arch :与体系结构相关的文件 2. block: 包含块存储设备IO调度算法的实现 3. cryrto: 密码操作有关 4. Documention: 内核中各个子系 ...
- MyBatis简单使用和入门理解
本文记录第一次使用Mybatis时碰到的一些错误和简单理解,采用的示例是Eclipse中的JAVA工程,采用XML文件定义数据库连接. 可以使用Java JDBC API直接操作数据库,但使用框架会更 ...
- Mac 建PHP 环境 及 配置 apache 默认目录
网上找的帮助,试一下,记录在此: 在Mac下配置php开发环境:Apache+php+MySql https://www.imooc.com/article/15705?block_id=tuiji ...
- 十二、文件和目录——Linux文件系统结构
12.1 Linux文件系统结构 12.1.1 文件操作基本元素 文件操作相关的最基本元素是:目录结构,索引节点和文件的数据本身 目录结构(目录项) 索引节点(i 节点) 文件的数据 12.1.2 文 ...
- SQL Server 远程备份详解
例1: 有A数据库服务器,B本机: 我现在想通过在B机器上通过代码调用SQL来执行A数据库的备份到B机器上 调用的SQL语句为:Backup Database MYDATABASE To Disk=' ...
- bean的实例化方式
spring中bean的实例化方式有三种,1.构造器实例化,2.实例工厂实例化,3.静态工厂实例化 1.构造器实例化方式 public class bean1 { public bean1() { } ...
- [C++]四分树(Quadtrees)
[本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] 四分树Quadtrees 一幅图有1024个点, 可以对图平均分成4块, 并且子图也可以再往下分, 直到一个 ...
- luogu P4899 [IOI2018] werewolf 狼火
传送门 首先很显然,从人形起点出发能到的点和狼形能到终点的点都是一个联通块,如果能从起点到终点则说明这两个联通块有交 这个时候可以请出我们的克鲁斯卡尔重构树,即对原图分别建两棵重构树,一棵边权为两端点 ...
- git 无法拉取新的远程分支
我们常常会根据远程分支创建本地分支,命令如下 git checkout -b dev origin/dev 上面的命令我是想把远程分支 dev 拉到本地来,但是有时候没有用,提示远程分支不存在,我们需 ...