链接:

#include <stdio.h>
int main()
{puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csdn.net/vmurder/article/details/44500477");
}

题解:

对于一个区间[l,r][l,r] , 若存在一个长度≥k\ge k并且<r−l2 的串K,它既相同于以ll为开端的等长串,又相同于以rr为结尾的等长串,那么这个区间就是一个可行串。

我们枚举区间左端点,然后可以利用KMP在线性的时间内处理完所有的右端点对答案的贡献。

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 16000
using namespace std;
int pre[N],fix,n,m,ans;
char s[N];
int main()
{freopen("test.in","r",stdin);int i,j,k;scanf("%s%d",s+1,&m);n=strlen(s+1);int uplimit=n-m-m;for(k=0;k<uplimit;k++){// 数组右移k位for(fix=0,i=2;i+k<=n;i++){while(fix&&s[i+k]!=s[fix+1+k])fix=pre[fix];if(s[i+k]==s[fix+1+k])fix++;pre[i]=fix;}for(fix=0,i=m+1;i+k<=n;i++){while(fix&&s[i+k]!=s[fix+1+k])fix=pre[fix];if(s[i+k]==s[fix+1+k])fix++;while(fix<<1>=i)fix=pre[fix];if(fix>=m)ans++;}}printf("%d\n",ans);return 0;
}

【BZOJ3620】似乎在梦中见过的样子 KMP相关推荐

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

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

  2. BZOJ 3620 似乎在梦中见过的样子 KMP+暴力

    题目大意:给定一个字符串,求这个字符串有多少个子串满足这个子串可以拆分成ABA的形式,其中|A|>=k,|B|>=1 梦の中で逢った.ような-... n<=15000 显然是直接给你 ...

  3. [BZOJ3620]似乎在梦中见过的样子(kmp)

    题目描述 传送门 题目大意:给出一个字符串,求有多少个子串满足是A+B+A的形式,其中|A|>=k,|B|>=1. 题解 做这道题之前就已经知道了资瓷O(n2)O(n^2)的kmp 然后就 ...

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

    一开始看到数据范围是15000就往后缀数组上想,想了好久没想出来怎么处理同一子串的问题,后来看了看题解才发现O(n^2)就可以过,用KMP类似NOI2014动物园的算法一样.枚举左端点,对于每个右端点 ...

  5. bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力

    题意 "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了 ...

  6. bzoj 3620: 似乎在梦中见过的样子 kmp暴力

    这道题目感觉上好像是可以用SA过掉的..但是看一下N15000然后Statue里面一个个都6000+ms,翻了一下题解发现是kmp暴力. 打了一半发现不会然后回去看题目,发现位置相同但是结构不懂的子串 ...

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

    传送门ber~ 这题-不是和BZOJ[3670]那题一样吗? 对每一个位置进行两遍KMP,第一遍求出nex数组后再进行一遍以统计合法答案 比那题多个判断条件-其余一模一样 代码如下: #include ...

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

    3620: 似乎在梦中见过的样子 Time Limit: 15 Sec  Memory Limit: 128 MB Submit: 755  Solved: 445 Description " ...

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

    参考博客: BZOJ 3620: 似乎在梦中见过的样子 [KMP]似乎在梦中见过的样子 题目描述 「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约. 这是M ...

最新文章

  1. java I/O之装饰者模式
  2. 深度分享:世界顶级神经科学家王小勤教授CCL 2018主旨报告(PPT全文,经报告人同意发布)...
  3. 深入理解Java中的final关键字
  4. python、PyTorch图像读取与numpy转换
  5. Dockerfile使用,怎么通过Dockerfile完成docker映像配置
  6. C++实现0-1-knapsack背包问题 (附完整源码)
  7. 阿里云力夺FewCLUE榜首!知识融入预训练+小样本学习的实战解析
  8. VS2010建立Windows服务项目时的一些问题
  9. zedboard--zynq使用自带外设IP让ARM PS访问FPGA(八) 转载
  10. 阿里云混合云管理平台发布帮您管好云
  11. powerdesigner 16设计mysql数据库_PowerDesigner16 连接MySql 报错
  12. 剑指offer java -查找旋转数组的最小数字
  13. FireFox如何使用扩展
  14. 虚拟服务器不识别网银盾,电脑浏览器无法使用建行E路航网银盾的解决方法
  15. 15岁黑客Cosmo的堕落历程
  16. linux yum 安装播放器,centos5下用yum安装MPlayer播放器
  17. Vue高仿网易云音乐APP (vue.js 移动端)
  18. ssh连接服务器 一段时间不动后 无响应
  19. 【论文笔记】CS会议论文书写注意点
  20. c汇编语言例题,第三章 汇编语言程序设计例题习题

热门文章

  1. MACBOOK安装WIN7(单系统)
  2. 南京理工大学 计算机调剂科目,南京理工大学2019考研调剂信息
  3. (9)3DMAX之复制功能(复制属性、变换复制、阵列工具、间隔工具)
  4. 基于SSM实现人事管理系统
  5. shell脚本上传文件到ftp服务器,shell脚本实现FTP自动上传文件
  6. Web车牌识别中API接口的调用
  7. uni-app吊起微信公众号支付
  8. Intel software developer manual
  9. 【网易公开日】《梦幻西游》手游服务器如何实现200万玩家同时在线?(技术篇)
  10. 如何使用SPSS利用交叉表计算疾病相对危险度