【bzoj3620】 似乎在梦中见过的样子 KMP
一开始看到数据范围是15000就往后缀数组上想,想了好久没想出来怎么处理同一子串的问题,后来看了看题解才发现O(n^2)就可以过,用KMP类似NOI2014动物园的算法一样。枚举左端点,对于每个右端点处理出以右端点为结尾最大长度使得从左端点开始的前缀等于以右端点结束的后缀,即next数组。然后一直往前跳,直到长度小于子串长度的一半为止。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#define maxn 20010using namespace std;int next[maxn];
char s[maxn];
int n,k,ans;void KMP(int p)
{for (int i=1;i<=n;i++) next[i]=p-1;for (int i=p+1;i<=n;i++){int j=next[i-1];while (j!=p-1 && s[j+1]!=s[i]) j=next[j];if (s[j+1]==s[i]) j++;next[i]=j;}int j=next[p];for (int i=p+1;i<=n;i++){while (j!=p-1 && s[j+1]!=s[i]) j=next[j];if (s[j+1]==s[i]) j++;while ((j-p+1)*2>=(i-p+1)) j=next[j];if (j-p+1>=k) ans++;}
}int main()
{scanf("%s",s+1);scanf("%d",&k);n=strlen(s+1);for (int i=1;i<=n;i++)KMP(i);printf("%d\n",ans);return 0;
}
【bzoj3620】 似乎在梦中见过的样子 KMP相关推荐
- 似乎在梦中见过的样子 (KMP)
# 10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子 [题目描述] 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Mo ...
- BZOJ 3620 似乎在梦中见过的样子 KMP+暴力
题目大意:给定一个字符串,求这个字符串有多少个子串满足这个子串可以拆分成ABA的形式,其中|A|>=k,|B|>=1 梦の中で逢った.ような-... n<=15000 显然是直接给你 ...
- 【BZOJ3620】似乎在梦中见过的样子 KMP
链接: #include <stdio.h> int main() {puts("转载请注明出处[vmurder]谢谢");puts("网址:blog.csd ...
- [BZOJ3620]似乎在梦中见过的样子(kmp)
题目描述 传送门 题目大意:给出一个字符串,求有多少个子串满足是A+B+A的形式,其中|A|>=k,|B|>=1. 题解 做这道题之前就已经知道了资瓷O(n2)O(n^2)的kmp 然后就 ...
- bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力
题意 "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了 ...
- bzoj 3620: 似乎在梦中见过的样子 kmp暴力
这道题目感觉上好像是可以用SA过掉的..但是看一下N15000然后Statue里面一个个都6000+ms,翻了一下题解发现是kmp暴力. 打了一半发现不会然后回去看题目,发现位置相同但是结构不懂的子串 ...
- BZOJ[3620]似乎在梦中见过的样子 KMP
传送门ber~ 这题-不是和BZOJ[3670]那题一样吗? 对每一个位置进行两遍KMP,第一遍求出nex数组后再进行一遍以统计合法答案 比那题多个判断条件-其余一模一样 代码如下: #include ...
- 【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 ...
最新文章
- 解决 Unable to get provider
- leetcode算法题--验证二叉树的前序序列化
- Oracle-等待事件解读
- python 函数参数 (必选参数、默认参数、可选参数、关键字参数)
- 【Apache JMeter】JMeter接口压测实例
- Ubuntu 16.04下面安装grub-customizer来切换ubuntu+win7双系统开机启动顺序
- jwt重放攻击_【干货分享】基于JWT的Token认证机制及安全问题
- 在Java8中包装设计模式
- 【CSS 技能提升】 :before和:after的使用
- 大数据驱动业务决策,CDN实时日志重磅上线
- java入职华为,通过这9个Java面试题,就可以入职华为啦
- java缓存管理器_使用@EnableCaching的Spring Boot默认缓存管理器
- 我是怎样给 Delphi 代码着色的 - 回复 sunhj 的问题
- C#使用MX Component与三菱PLC建立通讯(以FX5U举例)
- Spring源码解析系列汇总
- 实现MySQL读写分离---maxscale代理服务器配置(详解)
- android电视手柄游戏,为游戏而生 Android TV的秘密武器露真容
- Delphi输出日志的方法
- 一个区块链项目的40种死法 |链捕手
- 班级文化建设计算机专业,云计算背景下计算机专业三二段学生班级文化建设研究①...