【kmp】bzoj3620: 似乎在梦中见过的样子
考察kmp理解题
Description
Input
Output
Sample Input
aaaaa
1
【样例输入 2】
abcabcabc
2
Sample Output
6
【样例输出 2】
8
HINT
对于 100%的数据:n<=15000 , k<=100,且字符集为所有小写字母
题目分析
由于起点不固定,那么相当于是做$n$次kmp。为方便起见,以下的题解只讨论第一次kmp的情况。
暴力做法
考虑子串$[1,i]$若存在贡献,那么$fail[i]$一直向上的路径上必定存在节点$j$使得$fail[j]<k,j≥k且2k+1≤i$.
那么每一次暴力向上跳来检查是否合法。时间复杂度$O(n^3)$
分析一下
把$fail[]$视作树形结构。由于这个结构的更新是自顶向下的,就可以顺带维护一个路径上大于等于$k$的最短前缀长度。时间复杂度$O(n^2)$
#include<bits/stdc++.h>
const int maxn = ;
const int INF = 1e9; char s[maxn];
int k,fail[maxn],mn[maxn],n,ans; int main()
{
// freopen("seq10.in","r",stdin);
scanf("%s%d",s+,&k);
n = strlen(s+), mn[] = INF;
for (int t=; t<=n; t++)
{
for (int i=t, j=, x; i<n; i++)
{
while (j!=&&s[i+]!=s[j+t]) j = fail[j];
if (s[i+]==s[j+t]) j++;
// x = j;
// while (fail[x] >= k) x = fail[x];
if (j < k) mn[j] = INF;
else mn[j] = std::min(mn[fail[j]], j);
x = mn[j];
if (x >= k&&*x <= i-t+) ans++;
fail[i+-t+] = j;
}
}
printf("%d\n",ans);
return ;
}
END
【kmp】bzoj3620: 似乎在梦中见过的样子的更多相关文章
- bzoj3620似乎在梦中见过的样子
bzoj3620似乎在梦中见过的样子 题意: 给出一个字符串,要求求出形如A+B+A的子串数量,且lenA≥k,lenB≥1.字符串长度≤15000,k≤100,所以字符长度为小写字母. 题解: 第一 ...
- 【kmp】似乎在梦中见过的样子
参考博客: BZOJ 3620: 似乎在梦中见过的样子 [KMP]似乎在梦中见过的样子 题目描述 「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约. 这是M ...
- BZOJ3620: 似乎在梦中见过的样子(KMP)
Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了使 ...
- BZOJ3620 似乎在梦中见过的样子(kmp)
不是很懂为什么数据范围要开的这么诡异,想到正解都不敢写.用类似NOI2014动物园的方法,对每个后缀求出类似next的数组即可. #include<iostream> #include&l ...
- bzoj3620 似乎在梦中见过的样子
好久没有写过KMP了,今天写个KMP练练手.此题就是枚举左端点暴力,用KMP做到O(n^2) #include<cstdio> #include<cstring> using ...
- 【BZOJ3620】似乎在梦中见过的样子 KMP
[BZOJ3620]似乎在梦中见过的样子 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个 ...
- 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
3620: 似乎在梦中见过的样子 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 755 Solved: 445 Description “Madok ...
- 似乎在梦中见过的样子 (KMP)
# 10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子 [题目描述] 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Mo ...
- BZOJ 3620: 似乎在梦中见过的样子
似乎在梦中见过的样子.... 一道水题调了这么久,还半天想不出来怎么 T 的...佩服自己(果然蒟蒻) 这题想想 KMP 但是半天没思路瞟了一眼题解发现暴力枚举起始点,然后 KMP 如图: O( n2 ...
随机推荐
- EF下使用自定义的connectionString避免数据库密码泄露
在使用EF框架时,缺省情况下数据库访问字串是明码存放在app.config或web.config中的,相当于让数据库裸奔. 实际上EF在创建数据实体时,可以指定连接字串,取代在app.config中读 ...
- 前端CSS(1)
前端基础CSS(1) 一.css的引入方式 现在的互联网前端分三层: HTML:超文本标记语言.从语义的角度描述页面结构. CSS:层叠样式表.从审美的角度负责页面样式. JS:JavaScrip ...
- C#远程连接sqlserver时,尝试读取或写入受保护的内存
管理员身份运行 cmd -> 输入 netsh winsock reset
- Oracle批量SQL之 BULK COLLECT 子句
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎.通常可以在SELECT INTO.FETCH INTO以及RETURNING ...
- CentOS7.2安装MySql5.7并开启远程连接授权
1.安装mysql5.7 CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL,因此安装方式较为以往有一些改变: 下载mysql的源 wget http://dev.mysq ...
- 如何解决Eureka Server不踢出已关停的节点的问题?
如何解决Eureka Server不踢出已关停的节点的问题? eureka端: eureka.server.enable-self-preservation ...
- java核心技术 - 17个重要的知识点
1.Java中没有多继承,而是用接口来代替多继承 2.运行一个已经编译的程序时,Java解释器总是从指定类的main方法中的代码开始执行,因此,执行代码中必须有一个main函数. 3.Java是典型的 ...
- IT届常用单词读法纠正
Bootstrap ['bʊt'stræp] Java ['dʒɑːvə] Node [nod] @ [æt; ət] Common ['kɑmən] Java ...
- winform 配置文件增删改查
winform 配置文件是 App.config webform 的配置文件 是web.config 其实基本操作都一样 设置个配置文件 全局文件 访问者个配置文件 对这个配置文件增删 ...
- SPOJ BALNUM Balanced Numbers 平衡数(数位DP,状压)
题意: 平衡树定义为“一个整数的某个数位若是奇数,则该奇数必定出现偶数次:偶数位则必须出现奇数次”,比如 222,数位为偶数2,共出现3次,是奇数次,所以合法.给一个区间[L,R],问有多少个平衡数? ...