3620: 似乎在梦中见过的样子 KMP
2016-03-19 21:02
197 查看
枚举左端点跑KMP,O(n2)也能过真是!@#¥%……
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,ans,k; char s[20005]; int next[20005]; inline void KMP(int p) { for (int i=1;i<=n;i++) next[i]=p-1; int j=p-1; for (int i=p+1;i<=n;i++) { while (j!=p-1&&s[j+1]!=s[i]) j=next[j]; if (s[j+1]==s[i]) j++; next[i]=j; } j=p-1; for (int i=p+1;i<=n;i++) { while (j!=p-1&&s[j+1]!=s[i]) j=next[j]; if (s[j+1]==s[i]) j++; while ((j-p+1)*2>=(i-p+1)) j=next[j]; if (j-p+1>=k) ans++; } } int main() { scanf("%s%d",s+1,&k); n=strlen(s+1); for (int i=1;i<=n;i++) KMP(i); cout << ans << endl; }
相关文章推荐
- Linux下sqlplus显示乱码
- 将c语言输出结果输出到txt
- 求二叉树节点所在层号
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- div img span 垂直居中问题
- DWR入门
- linux下导入、导出mysql数据库命令
- python orm框架-----SQLALchemy-查询篇
- 第六届蓝桥杯 java C组 立方尾不变
- Spring和MyBatis环境整合
- 计算机网络之传输层总结
- USB固件开发keil C51 Error: User Command terminated, Exit-Code = 1
- 斜率在解题中的巧用
- 库克:FBI的要求比泄露用户裸照还过分
- 库克:FBI的要求比泄露用户裸照还过分
- Linux字符驱动开发学习总结
- 机器学习 笔记一
- HDOJ 4505 小Q系列故事——电梯里的爱情
- RxJava入门学习笔记
- 关于ASPCMS标签调用的一些总结