正题

ybtoj KMP-4


题目大意

给出字符串S,问你有多少个子串满足ABA的形式,且∣A∣⩾k,∣B∣⩾1|A|\geqslant k,|B|\geqslant 1∣A∣⩾k,∣B∣⩾1


解题思路

可以先枚举左端点,然后跑KMP,使其满足左右两个A,然后判断A,B是否满足条件,然后计算答案

时间复杂度O(n2)O(n^2)O(n2),理论上是过不了的,但它就是过了,题解还是这么写的


代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 15010
using namespace std;
int k, n, ans, nx[N];
char s[N];
void kmp(char* s)
{int n = strlen(s+1); nx[1] = 0;for (int i = 2, j = 0; i <= n; ++i){while (s[i] != s[j + 1] && j) j = nx[j];if (s[i] == s[j + 1]) j++;nx[i] = j;}for (int i = 2, j = 0; i <= n; ++i){while (s[i] != s[j + 1] && j) j = nx[j];if (s[i] == s[j + 1]) j++;if (i - j <= j) j = nx[j];//|B|⩾0if (j >= k) ans++;}return;
}
int main()
{scanf("%s%d", s+1, &k);n = strlen(s+1);for (int i = 0; i < n - k * 2; ++i)kmp(s + i);printf("%d", ans);return 0;
}

【KMP】子串拆分(ybtoj KMP-4)相关推荐

  1. java中KMP模式_朴素模式匹配算法、kmp模式匹配算法、kmp模式匹配算法改进。java代码...

    ** 朴素模式匹配算法.kmp模式匹配算法.kmp模式匹配算法改进.java代码** 思路过段时间整理~ 可以先看看阮一峰的这篇博客,字符串匹配的KMP算法 package edu.hubu.base ...

  2. 【KMP】重复子串(ybtoj KMP-2)

    正题 ybtoj KMP-2 题目大意 问你一个字符串最多由多少个相同的字符串组合而成 解题思路 如下图,先用KMP求出nx数组,那么有1∼nxn1\sim nx_n1∼nxn​和(n−nxn)∼n( ...

  3. P3375 【模板】KMP字符串匹配 (KMP模板)

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next. (如果你不知道这是什么意思也不要问,去百度 ...

  4. kmp算法 php,漫画KMP算法-程序员小灰

    // KMP算法主体逻辑.str是主串,pattern是模式串 public static int kmp(String str, String pattern) { //预处理,生成next数组 i ...

  5. js实现kmp算法_基于KMP算法JavaScript的实现方法分析

    算法的核心是部分匹配表和回退算法,部分匹配表的实现如下: function kmpGetStrPartMatchValue(str) { var prefix = []; var suffix = [ ...

  6. java kmp算法_java实现KMP算法

    第一种 暴力移位(效率低,资源浪费) 第二种KMP算法 这是直接盗用老师ppt中的内容,意思大家明白就好了,看代码: public class KMP { public int Index_KMP(S ...

  7. 数据结构与算法之解析之路

    数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和索引技术有 ...

  8. 学习KMP (概念 + 模板 + 例题: 子串查找)

    我又回来了,感jio这几天有点勤啊!! 这一次我带着KMP来了, 文章目录 KMP介绍 模板 例题: 子串查找 题目 暴力题解 KMP题解 代码实现 KMP介绍 KMP,即 Knuth-Morris- ...

  9. 字符串模式匹配——最长公共子序列与子串 KMP 算法

    最长公共子序列 最长公共子序列的问题很简单,就是在两个字符串中找到最长的子序列,这里明确两个含义: 子串:表示连续的一串字符 . 子序列:表示不连续的一串字符. 所以这里要查找的是不连续的最长子序列, ...

最新文章

  1. ASP.NET Web Pages – 文件夹简介
  2. P3项目全球模板狗血设置之二 --- 移动类型523收货不能自动创建批次号
  3. java单元测试总结
  4. C. 防止E-mail注入
  5. ssm整合之六 时间日期装换
  6. 介绍开源的.net通信框架NetworkComms
  7. 【项目】ARX程序开发:框裁直线(Rect Trim Line)功能开发
  8. Python学习笔记整理总结【Django】Ajax
  9. IEEE 会议模板介绍
  10. 春节过后,外贸人如何快速抓住采购旺季,高效跟进客户
  11. VISIO输出黑白色电路图
  12. FLASH中打开网页链接,本地打不开的问题。
  13. Selenium获取动态图片验证码
  14. 张亚勤寄语哥伦比亚大学2020年毕业生:引领未知时代
  15. 千亿市场规模的物流SaaS平台,是发生在云端的物流信息化的二次革命
  16. 数学竞赛倒计时23天_变上限下限积分求导法则
  17. 【自然语言处理】Gensim中的Word2Vec
  18. 正则表达式对密码限定格式:必须包含英文,数字,字符且密码长度大于8位
  19. 2015年腾讯游戏策划岗位笔试题目
  20. 元胞自动机对传染病模型的模拟

热门文章

  1. java中formfile,基于Struts FormFile上传文件
  2. linux服务器查配置信息失败,查看Linux服务器的配置信息
  3. python如何封装成可调用的库_Python实现打包成库供别的模块调用
  4. 机器学习之数据预处理——数据清洗(缺失值、异常值和重复值的处理)
  5. 16位并行加载寄存器设计
  6. [C++11]指针空值类型nullptr
  7. C++ class实现二叉树(完整代码,附非递归遍历)
  8. LeetCode 101对称二叉树-简单
  9. 数据结构与算法-- 八皇后问题(多种实现方案)
  10. Codeforces Round #446 (Div. 1) B. Gluttony 构造 + 补集思想