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部分 基础算法(提高篇)--第1章 贪心算法1425:【例题4】加工生产调度

    1425:[例题4]加工生产调度 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 2047 通过数: 529 [题目描述] 某工厂收到了 n 个产品的订单,这 n 个产品分别在 A ...

  2. 第2部分 字符串算法(提高篇)--第1章 哈希和哈希表1463:门票

    1463:门票 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 842 通过数: 172 [题目描述] RPK 要带 MSH 去一个更加神秘的地方! RPK 带着 MSH 穿过广场 ...

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

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

  4. AcWing提高算法课Level-3 第六章 基础算法

    AcWing提高算法课Level-3 第六章 基础算法 位运算 AcWing 90. 64位整数乘法761人打卡 递推与递归 AcWing 95. 费解的开关520人打卡 AcWing 97. 约数之 ...

  5. AcWing进阶算法课Level-4 第七章 基础算法

    AcWing进阶算法课Level-4 第七章 基础算法 启发式合并 AcWing 2154. 梦幻布丁73人打卡 AcWing 3189. Lomsat gelral54人打卡 manacher算法 ...

  6. AcWing算法提高课 Level-3 第二章 搜索

    池塘计数 题目 提交记录 讨论 题解 视频讲解 农夫约翰有一片 N∗M 的矩形土地. 最近,由于降雨的原因,部分土地被水淹没了. 现在用一个字符矩阵来表示他的土地. 每个单元格内,如果包含雨水,则用& ...

  7. 字符串:你看的懂的KMP算法(带验证)

    前言 KMP算法可以说说许多学习算法的同学的第一道坎,要么是领会不到KMP算法的思想,要么是知道思想写不出代码,网上各种查找.关于算法的书籍上也都有KMP算法的实现,可为啥自己写不出来呢?博主看得大话 ...

  8. 基于高度图的三维地形生成算法入门篇 —— 均匀网格地形生成算法

    赵 刚 引言     在三维游戏等建立的虚拟世界中要求虚拟场景具有很高的逼真度,其中的三维地形逼真度是关键之一.然而三维地形的生成和绘制需要巨大的计算量,实景地形的生成还需要地形数据库的支持,在运算能 ...

  9. 信息学奥赛一本通 提高篇 第5章 矩阵乘法

    例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...

最新文章

  1. Session的几个主要方法
  2. 鸿蒙安卓哪个app好,可以放下对华为鸿蒙的担忧了,操作和EMUI相似,能兼容安卓APP - 区块网...
  3. 共享库中的位置无关代码(PIC)
  4. 【年终总结】2021年有三AI做了什么,2022年我们要做什么?
  5. 11-1 操作系统概念
  6. Android SharedPreferences总结及优化
  7. 「SCOI2014」方伯伯的 OJ 解题报告
  8. The Block披露员工持币情况,UNI等5个币种持有人数最多
  9. ThinkPHP5 笔记-控制器
  10. C语言小程序打印楼梯图案
  11. 深度学习入门资料整理
  12. 浅谈IPv4/IPv6转换技术
  13. txt unicode 前加 0xFF 0xFE
  14. 【高等数学】第 2 讲 两个重要的极限定理
  15. Hive职位岗位数据分析实战
  16. 表面缺陷检测的意义及现状
  17. 一般纳税人企业如何合理避税?
  18. input实现文字超出省略号功能
  19. android开发播放直播视频rtsp方案总结
  20. 你可能想象不到,手机号码标记居然也是一门月赚十万的好生意

热门文章

  1. 【BZOJ3875】[Ahoi2014Jsoi2014]骑士游戏 SPFA优化DP
  2. ARM裸机的知识点总结---------11、iNandFlash (sd卡芯片化)
  3. Linux生成图片文字乱码
  4. html的背景图片设置
  5. 金融机房托管解决方案
  6. 【MySQL】多表联合查询、连接查询、子查询
  7. java添加边框_Java如何为边框添加标题?
  8. 语法转换_近五年高考语法填空词性转换汇总(含答案)
  9. JSP高校信息管理系统myeclipse开发sql数据库web结构计算机java编程
  10. Data Binding的报错集合 例如Error 10 54 错误 程序包com kodulf recycl