题目链接: https://codeforces.com/contest/432/problem/D

题解:

做法一: KMP

显然next树上\(n\)的所有祖先都是答案,出现次数为next树子树大小。

做法二: 后缀数组/Z-box

按照height分组,二分查找即可。

这种题经常KMP和Z-box都能做。

另外哪位神犇教我一下扩展KMP和Z-box有啥区别。

代码

KMP:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<utility>
using namespace std;const int N = 1e5;
char a[N+3];
int nxt[N+3];
int sz[N+3];
vector<pair<int,int> > ans;
int n;void KMP()
{nxt[0] = nxt[1] = 0;for(int i=2; i<=n; i++){nxt[i] = nxt[i-1];while(nxt[i] && a[nxt[i]+1]!=a[i]){nxt[i] = nxt[nxt[i]];}if(a[nxt[i]+1]==a[i]) nxt[i]++;}
}int main()
{scanf("%s",a+1); n = strlen(a+1);for(int i=1; i<n+1-i; i++) swap(a[i],a[n+1-i]);KMP();for(int i=1; i<=n; i++) sz[i] = 1;for(int i=n; i>=1; i--) sz[nxt[i]] += sz[i];for(int i=n; i>0; i=nxt[i]){ans.push_back(make_pair(i,sz[i]));}printf("%d\n",ans.size());for(int i=ans.size()-1; i>=0; i--) printf("%d %d\n",ans[i].first,ans[i].second);return 0;
}

Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)相关推荐

  1. Codeforces 432D Prefixes and Suffixes(KMP+dp)

    题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次. 解题思路:依据性质能够依据KMP算法求出 ...

  2. CodeForces - 432D Prefixes and Suffixes(KMP的next数组性质)

    题目链接:点击查看 题目大意:给出一个字符串,求满足条件的所有子字符串在主串中出现的次数,条件就是当前子字符串在主串中既是前缀也是后缀 题目分析:因为今天小冰给我讲了一个与next数组配合的dp,也就 ...

  3. codeforces D Prefixes and Suffixes(kmp)

    先计算前缀函数,统计cnt[pi[i]]的个数,然后根据前缀前缀的迭代关系,即pi[pi[i] - 1],统计其个数,最后计算前缀自身. 代码参考: https://github.com/wuli24 ...

  4. Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes kmp + dp

    传送门 文章目录 题意: 思路: 题意: 思路: 通过完美子串的定义,我们不难发现满足条件的子串就是kmpkmpkmp中ne[n]ne[n]ne[n]不断向前跳得到的串,现在问题就是如何求这些前缀串在 ...

  5. POJ3080方法很多(暴力,KMP,后缀数组,DP)

    题意:       给n个串(n>=2&&n<=10),每个串长度都是60,然后问所有串的最长公共子串,如果答案不唯一输出字典序最小的. 思路:直接暴力,枚举+KMP,后缀 ...

  6. 2019年秦皇岛J题:MUV LUV EXTRA(KMP后缀数组)

    Problem Description 鉴纯夏是一名成绩不太好的高中生.一天她在数学考试中碰到了一道求某条线段长度的问题.因为她并不会做这道题,所以她准确地作图后用尺子量出了这条线段的长度.不幸的是, ...

  7. HDU - 4552 怪盗基德的挑战书(后缀数组+RMQ/KMP+dp)

    题目链接:点击查看 题目大意:给出一个字符串,统计每个前缀在字符串中出现的次数之和 题目分析:可以直接先用后缀数组跑出来height,再用RMQ跑出来任意两个后缀的height,我们可以将题意转换为求 ...

  8. Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp

    D. New Year and Ancient Prophecy 题目连接: http://www.codeforces.com/contest/611/problem/C Description L ...

  9. 字符串相关处理kmp,前缀数,后缀树,后缀数组,最长回文串,最长重复字串,最长非重复字串

    1. 最长回文串 一般用后缀数组或者后缀树可以解决, 用此方法:http://blog.csdn.net/v_july_v/article/details/6897097 预处理后缀树,使得查询LCA ...

最新文章

  1. 使用ajaxfileupload.js实现文件上传
  2. database disk image is malformed 问题解决
  3. linux查看日志命令_查看log日志基础命令
  4. 【实践案例】Databricks 数据洞察在美的暖通与楼宇的应用实践
  5. linux基线核查脚本
  6. 深入理解php 匿名函数和 Closure
  7. c语言程序设计 a b,用C语言编程时,a+=b 和 a=a+b 真的完全等价吗?
  8. 最擅长玩《毁灭战士》的AI开源了 | 来自CMU的论文代码
  9. vue 多个组件动态加载(动态组件的使用)
  10. nrg文件是什么?nrg文件格式详细介绍
  11. unb计算机科学,【加拿大新布伦瑞克大学】加拿大UNB_University of New Brunswick - 加拿大大学 - 加拿大留学云...
  12. 道德经和译文_老子《道德经》全文解析及通俗译文
  13. 重返设计模式--命令模式
  14. echarts将x轴展示在图标上方
  15. 梭杆菌(Fusobacterium)——共生菌,机会菌,癌杆菌
  16. c++《AVL树的概念》《AVL树的插入》《AVL树的旋转》《AVL树的验证》《AVL树的删除》《AVL树的性能》
  17. 游戏设计的艺术:一本透镜的书——第十五章 其中一种体验是故事
  18. Ubuntu 16.04下载编译Android11源码
  19. 下列不是用于制作计算机动画,计算机应用基础动画制作软件_2019答案章节答案期末答案...
  20. 作为技术人,如何突破自己的技术瓶颈,从而提高自己的核心竞争力

热门文章

  1. mysql replace into 使用过程中报错
  2. Gateway配合sentinel自定义限流_你知道如何使用阿里Sentinel实现接口限流吗?
  3. 国外程序员整理的 C++ 资源大全 (zt)
  4. 常用的渗透测试工具SQLMap
  5. android 始终显示overflow菜单
  6. 操作系统(六)系统调用
  7. 日常生活小技巧 -- 重装win10系统
  8. Mysql:Sql的执行顺序
  9. zcmu-1644 多连块拼图
  10. 【译】Federated Learning: Bringing Machine Learning to the edge with Kotlin and Android