参考博客:

BZOJ 3620: 似乎在梦中见过的样子


【KMP】似乎在梦中见过的样子

题目描述

「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约。

这是Modoka的一个噩梦,也同时是上个轮回中所发生的事。为了使这一次Madoka不再与QB签订契约,Homura决定在刚到学校的第一天就解决QB。然而,QB也是有许多替身的(但在第八话中的剧情显示它也有可能是无限重生的),不过,意志坚定的Homura是不会放弃的——她决定消灭所有可能是QB的东西。现在,她已感受到附近的状态,并且把它转化为一个长度为n的字符串交给了学OI的你。

现在你从她的话中知道,所有形似于A+B+A的字串都是QB或它的替身,且∣A∣≥k,∣B∣≥1(位置不同其他性质相同的子串算不同子串,位置相同但拆分不同的子串算同一子串),然后你必须尽快告诉Homura这个答案——QB以及它的替身的数量。

注:对于一个字符串S,|S|表示S的长度。

输入

第一行一个字符串S,第二行一个数k。

输出

仅一行一个数ans,表示QB以及它的替身的数量。

样例输入

aaaaa
1

样例输出

6

提示

对于全部数据,1≤∣S∣≤1.5×104,1≤k≤100,且字符集为所有小写字母。


【题解】

就在参考博客里面了。

主要是自己不要意思把别人画的图复制过来。

枚举所有左端点然后进行向右看看有没有一个最长前缀是符合要求的。

就是这么一个想法,但是细节稍微有点多。因为两层for需要更细心。

【代码】:

 #include<cstdio>
#include<cstring>
#include<algorithm> using namespace std;
const int N = 1e5+; char s[N];
int k,n,ans;
int Next[N];
int main()
{
scanf("%s%d",s+,&k);
n = strlen( s+ ); //printf("%s %d %d\n",s+1,k,n);
//枚举所有合法的左端点,左端点 预留2*k的距离
for(int L=; L<= n-(k*) ; L++ ) { for(int i = ; i <= L ; i++ ) Next[i] = L- ; //提前预处理好Next数组
for(int i=L+,j=L-;i<=n;i++){
while( j != L- && s[i] != s[j+] ) j=Next[j];
if( s[i] == s[j+] ) j++ ;
Next[i] = j ;
} for(int i=L+,j=L-;i<=n;i++){
while( j != L- && s[i] != s[j+] ) j=Next[j];
if( s[i] == s[j+] ) j++ ; //预处理的Next派上用场了
//当最长前缀的两倍 > 当前串(右端点-左端点)的长度
//利用Next数组缩短距离
while( (j-L+)* >= (i-L+) ) j = Next[j] ; //符合题意 累加答案,即前缀长度大于k
if( j-L+ >= k ) ans ++ ;
} }
printf("%d\n",ans);
return ;
}

【kmp】似乎在梦中见过的样子的更多相关文章

  1. 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)

    3620: 似乎在梦中见过的样子 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 755  Solved: 445 Description “Madok ...

  2. 似乎在梦中见过的样子 (KMP)

    # 10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子 [题目描述] 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Mo ...

  3. 【BZOJ3620】似乎在梦中见过的样子 KMP

    [BZOJ3620]似乎在梦中见过的样子 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个 ...

  4. BZOJ 3620: 似乎在梦中见过的样子

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

  5. BZOJ_3620_似乎在梦中见过的样子_KMP

    BZOJ_3620_似乎在梦中见过的样子_KMP Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka ...

  6. bzoj3620似乎在梦中见过的样子

    bzoj3620似乎在梦中见过的样子 题意: 给出一个字符串,要求求出形如A+B+A的子串数量,且lenA≥k,lenB≥1.字符串长度≤15000,k≤100,所以字符长度为小写字母. 题解: 第一 ...

  7. [BZOJ 3620] 似乎在梦中见过的样子 【KMP】

    题目链接:BZOJ - 3620 题目分析 这道题使用 KMP 做 O(n^2) 的暴力就能过. 首先,我们依次枚举字串左端点 l ,然后从这个左端点开始向后做一次 KMP. 然后我们枚举右端点 r  ...

  8. BZOJ.3620.似乎在梦中见过的样子(KMP)

    题目链接 /* 896kb 6816ms A+B+A是KMP的形式,于是固定左端点,对于每个位置i,若fail[i]所能到的点k中(k=fail[fail[fail[...]]]),有满足len(l~ ...

  9. 【kmp】bzoj3620: 似乎在梦中见过的样子

    考察kmp理解题 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中 ...

随机推荐

  1. AGC023C Painting Machines

    题意 有一排\(n\)个格子,\(i\)操作会使\(i\)和\(i+1\)都变黑. 一个操作序列的得分为染黑所有格子时所用的步数 问所有排列的得分和. \(n\le 10^6\) 传送门 思路 有一个 ...

  2. Zhejiang Provincial Collegiate Programming Contest + ZOJ Monthly

    题目链接:https://vjudge.net/contest/152802#overview. 前五题以前做过了.不过还是没能全A= =. 前三题水题,略过. 第四题是找规律,暴力打表找一下循环节即 ...

  3. Java并发指南10:Java 读写锁 ReentrantReadWriteLock 源码分析

    Java 读写锁 ReentrantReadWriteLock 源码分析 转自:https://www.javadoop.com/post/reentrant-read-write-lock#toc5 ...

  4. 网络共享服务—SAMBA服务

    SAMBA服务简介 SMB:Server Message Block服务器消息块,IBM发布,最早是DOS网络文件共享协议 Cifs:common internet file system,微软基于S ...

  5. centos7 设置 防火墙 开机自启

    CentOS 7.0默认使用的是firewall作为防火墙,之前版本是使用iptables. 1.设置firewall开机启动 systemctl enable firewalld 2.禁止firew ...

  6. Mysql触发器详解以及union的使用

    ---恢复内容开始--- Mysql触发器定义: 当一个表中有insert update delete事件发生,触发一个事件,执行一段代码.作用: 同步数据创建: create trigger 名称 ...

  7. Swift 常量

    常量一旦设定,在程序运行时就无法改变其值. 常量可以是任何的数据类型如:整型常量,浮点型常量,字符常量或字符串常量.同样也有枚举类型的常量: 常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量 ...

  8. 文件上传对servlet的要求

    request.getParamter(String name)方法不能再使用了 需要使用request.getInputStream()获取输入流对象然后在进行读取数据 解析数据 ServletIn ...

  9. OpenCL使用CL_MEM_USE_HOST_PTR存储器对象属性与存储器映射

    随着OpenCL的普及,现在有越来越多的移动设备以及平板.超级本等都支持OpenCL异构计算.而这些设备与桌面计算机.服务器相比而言性能不是占主要因素的,反而能耗更受人关注.因此,这些移动设备上的GP ...

  10. 07-08 Flutter仿京东商城项目 商品分类页面布局:Flutter仿京东商城项目 商品分类页面数据渲染

    Flutter实战(交流群:452892873) 本项目是一个实战项目,根据目录建文件,并复制从第一节到最新更新的文章,可以构成完整的一个请求后台数据的项目: CateModel.dart class ...