题目链接

/*
896kb 6816ms
A+B+A是KMP的形式,于是固定左端点,对于每个位置i,若fail[i]所能到的点k中(k=fail[fail[fail[...]]]),有满足len(l~k)+len(i-k+l-1,i)<len(l,i),且len(l~k)>=K,则i满足条件
每个位置仅计算一次 就很好做了
O(n^2) 也能过。。
*/
#include <cstdio>
#include <cstring>
const int N=15010; int n,K,res,fail[N];
char s[N]; void KMP(int p)
{
fail[p]=p-1;
for(int k,j,i=p+1; i<=n; ++i)
{
j=fail[i-1];
while(j>=p && s[i]!=s[j+1]) j=fail[j];
k=fail[i]= s[i]==s[j+1]?j+1:p-1;
while(i-p+1<=2*(k-p+1)) k=fail[k];
if(k-p+1>=K) ++res;
}
} int main()
{
scanf("%s%d",s+1,&K), n=strlen(s+1);
for(int i=1; i<=(n-2*K); ++i) KMP(i);//别去了等号。。
printf("%d",res); return 0;
}

最新文章

  1. Linux 江湖系列阶段性总结
  2. tomcat 504 gateway time-out
  3. 使用antd UI组件有感
  4. 对于C(n,k)取模
  5. javascript方法 call()和apply()的用法
  6. 约跑APP测试报告
  7. linux驱动之I2C
  8. #pragma warning (default : n)
  9. 听听Matt Rogish说怎么面试程序员
  10. DM6446开发攻略——u-boot-1.3.4移植(1)
  11. Windows下结束tomcat进程,dos命令
  12. 凹凸曼的修改zencart 程序(经典!)
  13. CentOS 7.6环境下安装中文字体库
  14. M1/M2 总结
  15. 【洛谷P4735】最大异或和
  16. python 实现排序算法(三)-选择排序和冒泡排序
  17. Python(28)---模块和包的基本概念
  18. xampp 教程
  19. spring-data-mongodb关于id的坑
  20. 《EMCAScript6入门》读书笔记——24.编程风格

热门文章

  1. Reverse Words in a String I &amp; Reverse Words in a String II
  2. php数据库的增删改查
  3. c# webbrowser控件内核版本强制修改
  4. Laravel collection 报错 join(): Invalid arguments passed
  5. zoj1716简单的二维树状数组
  6. 性能测试四:jmeter进阶之逻辑控制器
  7. 使用Struts,实现简单的登录
  8. oracle表分区的,分区操作,分区查询,子分区查询
  9. 《剑指offer》-数组中只出现一次的数字
  10. Android APN