bzoj3620 似乎在梦中见过的样子
好久没有写过KMP了,今天写个KMP练练手。
此题就是枚举左端点暴力,用KMP做到O(n^2)
1 #include<cstdio> 2 #include<cstring> 3 using namespace std ; 4 5 const int MAXL = 15000 + 20 ; 6 7 char BUF_OF_T [ MAXL ] ; 8 int BUF_OF_F [ MAXL ] ; 9 10 class KMP { 11 private : 12 char * T ; 13 int * F ; 14 public : 15 KMP ( char * S ) { 16 const int L = strlen ( S ) ; 17 T = BUF_OF_T ; F = BUF_OF_F ; 18 strcpy ( T , S ) ; F [ 0 ] = -1 ; 19 for ( int i = 1 ; i <= L ; ++ i ) { 20 int p = F [ i - 1 ] ; 21 while ( p >= 0 && T [ i ] != T [ p + 1 ] ) p = F [ p ] ; 22 F [ i ] = T [ i ] == T [ p + 1 ] ? p + 1 : -1 ; 23 } 24 } 25 int * GET_FAIL () const { return F ; } 26 } ; 27 28 char S [ MAXL ] ; 29 int K ; 30 int cnt ; 31 int main () { 32 scanf ( "%s%d" , S , & K ) ; 33 for ( int i = 0 ; S [ i ] != '\0' ; ++ i ) { 34 char * a = S + i ; 35 KMP D ( a ) ; 36 int * next = D . GET_FAIL () ; 37 const int L = strlen ( a ) ; 38 for ( int j = 1 ; j <= L ; ++ j ) { //重点:是1 <= j <= L 不是 1 <= j < L 39 int & p = next [ j ] ; 40 while ( p != -1 && next [ p ] + 1 >= K ) p = next [ p ] ; 41 if ( p + 1 >= K && j + 1 - ( p + 1 ) * 2 > 0 ) cnt ++ ; 42 } 43 } 44 printf ( "%d\n" , cnt ) ; 45 return 0 ; 46 }
转载于:https://www.cnblogs.com/Christopher-Cao/p/5184757.html
bzoj3620 似乎在梦中见过的样子相关推荐
- [BZOJ3620]似乎在梦中见过的样子(kmp)
题目描述 传送门 题目大意:给出一个字符串,求有多少个子串满足是A+B+A的形式,其中|A|>=k,|B|>=1. 题解 做这道题之前就已经知道了资瓷O(n2)O(n^2)的kmp 然后就 ...
- 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
3620: 似乎在梦中见过的样子 Time Limit: 15 Sec Memory Limit: 128 MB Submit: 755 Solved: 445 Description " ...
- 【kmp】似乎在梦中见过的样子
参考博客: BZOJ 3620: 似乎在梦中见过的样子 [KMP]似乎在梦中见过的样子 题目描述 「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约. 这是M ...
- 第2部分 字符串算法(提高篇)--第2章 KMP算法1469:似乎在梦中见过的样子
1469:似乎在梦中见过的样子 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 476 通过数: 159 [题目描述] 原题来自:2014 年湖北省队互测 Week2 「Madok ...
- 似乎在梦中见过的样子 (KMP)
# 10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子 [题目描述] 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Mo ...
- BZOJ 3620 似乎在梦中见过的样子 KMP+暴力
题目大意:给定一个字符串,求这个字符串有多少个子串满足这个子串可以拆分成ABA的形式,其中|A|>=k,|B|>=1 梦の中で逢った.ような-... n<=15000 显然是直接给你 ...
- 【bzoj3620】【似乎在梦中见过的样子】【kmp】
Description "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回 ...
- 【BZOJ3620】似乎在梦中见过的样子 KMP
链接: #include <stdio.h> int main() {puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csd ...
- 【bzoj3620】 似乎在梦中见过的样子 KMP
一开始看到数据范围是15000就往后缀数组上想,想了好久没想出来怎么处理同一子串的问题,后来看了看题解才发现O(n^2)就可以过,用KMP类似NOI2014动物园的算法一样.枚举左端点,对于每个右端点 ...
- bzoj 3620: 似乎在梦中见过的样子
Description "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回 ...
最新文章
- 浙江大学首次跻身全球50强,上海交大论文发表量全球第四 | QS最新世界大学排名...
- eureka源码:开启eureka server
- 群辉挂载linux nfs,Debian 9 挂载访问已设置的群晖NFS共享文件目录
- Metasploit是一款开源的安全漏洞检测工具,
- 常用的 iptables配置脚本
- asmx迷10分钟升级成wcf熟手指南
- C++11::遍历tuple中的元素
- JRuby--Java和Ruby的强强联合 Centos7.X
- 2017值得一瞥的JavaScript相关技术趋势
- Java常见gis开源框架,开源gis大全java
- MDI Jade6.5安装教程-附安装包
- Qt对图像的二值化处理
- MFC调用RDP实现远程桌面共享实例
- 初学MSP430SPI通信
- 宣传一个非常好看的鼠标指针样式
- 卸载wps后桌面上的office文件图标变成了白色(亲测有效)
- python学习——print和pprint两者的区别
- c++第二次作业-定期存款利息计算器
- html5红外遥控,做了个小的红外遥控装置
- 电子产品中EMC隔离设计的方法
热门文章
- C语言:一个五位数,判断其是否为回文数
- 计算机关闭的时候自动更新,win7自动更新关闭有什么影响_win7系统关闭自动更新的步骤-win7之家...
- [CodeForces - 276A] Lunch Rush
- 什么是去中心化?交易所为什么要去中心化?
- .com才是顶级域名,baidu.com是二级域名
- Android:是时候掌握WebView与Js的交互技术了
- 如果出现网络请求3840的这种错误
- red hat linux 6.4 DNS配置(怎么不让发表?)
- vc2005 seh新认识
- JavaScript(三)数据类型转换