第2部分 字符串算法(提高篇)--第2章 KMP算法1469:似乎在梦中见过的样子
1469:似乎在梦中见过的样子
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 476 通过数: 159
【题目描述】
原题来自:2014 年湖北省队互测 Week2
「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
【提示】
样例输入2
abcabcabc
2
样例输出2
8
数据范围:
对于全部数据,1≤∣S∣≤1.5×104,1≤k≤100,且字符集为所有小写字母。
思路:暴力出奇迹。暴力枚举合法字符串的左端点,从左端点开始的字串跑一遍kmp。
#include<cstring>
#include<cstdio>
using namespace std;
const int N=2e4+110;
int n,k,ans;
int next[N]; char s[N];
int main(){scanf("%s%d",s+1,&k),n=strlen(s+1);for(int t=1,i,j;t <= n-(k<<1);++t){for(i = 1;i <= t;++i) next[i]=t-1; for(i = t+1,j = t-1;i <= n;++i){while(j^t-1 && s[i] != s[j+1]) j=next[j];if(s[i] == s[j+1]) ++j; next[i]=j;} //next 数组是要先预处理的,然后才能处理答案for(i = t+1,j = t-1;i <= n;++i){while(j^t-1 && s[i]!=s[j+1]) j=next[j];if(s[i] == s[j+1]) ++j;while(j-t+1 >= i-j) j = next[j]; // B 没了,跳向 nextif(j-t+1 >= k) ++ans; //长度满足就累加答案}} printf("%d\n",ans); return 0;
}
第2部分 字符串算法(提高篇)--第2章 KMP算法1469:似乎在梦中见过的样子相关推荐
- 第1部分 基础算法(提高篇)--第1章 贪心算法1425:【例题4】加工生产调度
1425:[例题4]加工生产调度 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 2047 通过数: 529 [题目描述] 某工厂收到了 n 个产品的订单,这 n 个产品分别在 A ...
- 第2部分 字符串算法(提高篇)--第1章 哈希和哈希表1463:门票
1463:门票 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 842 通过数: 172 [题目描述] RPK 要带 MSH 去一个更加神秘的地方! RPK 带着 MSH 穿过广场 ...
- bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力
题意 "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了 ...
- AcWing提高算法课Level-3 第六章 基础算法
AcWing提高算法课Level-3 第六章 基础算法 位运算 AcWing 90. 64位整数乘法761人打卡 递推与递归 AcWing 95. 费解的开关520人打卡 AcWing 97. 约数之 ...
- AcWing进阶算法课Level-4 第七章 基础算法
AcWing进阶算法课Level-4 第七章 基础算法 启发式合并 AcWing 2154. 梦幻布丁73人打卡 AcWing 3189. Lomsat gelral54人打卡 manacher算法 ...
- AcWing算法提高课 Level-3 第二章 搜索
池塘计数 题目 提交记录 讨论 题解 视频讲解 农夫约翰有一片 N∗M 的矩形土地. 最近,由于降雨的原因,部分土地被水淹没了. 现在用一个字符矩阵来表示他的土地. 每个单元格内,如果包含雨水,则用& ...
- 字符串:你看的懂的KMP算法(带验证)
前言 KMP算法可以说说许多学习算法的同学的第一道坎,要么是领会不到KMP算法的思想,要么是知道思想写不出代码,网上各种查找.关于算法的书籍上也都有KMP算法的实现,可为啥自己写不出来呢?博主看得大话 ...
- 基于高度图的三维地形生成算法入门篇 —— 均匀网格地形生成算法
赵 刚 引言 在三维游戏等建立的虚拟世界中要求虚拟场景具有很高的逼真度,其中的三维地形逼真度是关键之一.然而三维地形的生成和绘制需要巨大的计算量,实景地形的生成还需要地形数据库的支持,在运算能 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
最新文章
- Session的几个主要方法
- 鸿蒙安卓哪个app好,可以放下对华为鸿蒙的担忧了,操作和EMUI相似,能兼容安卓APP - 区块网...
- 共享库中的位置无关代码(PIC)
- 【年终总结】2021年有三AI做了什么,2022年我们要做什么?
- 11-1 操作系统概念
- Android SharedPreferences总结及优化
- 「SCOI2014」方伯伯的 OJ 解题报告
- The Block披露员工持币情况,UNI等5个币种持有人数最多
- ThinkPHP5 笔记-控制器
- C语言小程序打印楼梯图案
- 深度学习入门资料整理
- 浅谈IPv4/IPv6转换技术
- txt unicode 前加 0xFF 0xFE
- 【高等数学】第 2 讲 两个重要的极限定理
- Hive职位岗位数据分析实战
- 表面缺陷检测的意义及现状
- 一般纳税人企业如何合理避税?
- input实现文字超出省略号功能
- android开发播放直播视频rtsp方案总结
- 你可能想象不到,手机号码标记居然也是一门月赚十万的好生意
热门文章
- 【BZOJ3875】[Ahoi2014Jsoi2014]骑士游戏 SPFA优化DP
- ARM裸机的知识点总结---------11、iNandFlash (sd卡芯片化)
- Linux生成图片文字乱码
- html的背景图片设置
- 金融机房托管解决方案
- 【MySQL】多表联合查询、连接查询、子查询
- java添加边框_Java如何为边框添加标题?
- 语法转换_近五年高考语法填空词性转换汇总(含答案)
- JSP高校信息管理系统myeclipse开发sql数据库web结构计算机java编程
- Data Binding的报错集合 例如Error 10 54 错误 程序包com kodulf recycl