codeforces432D[kmp的next数组的运用]
解题思路:1.就是nxt数组不断嵌套递归下去就好了
2.如何统计子串出现的个数
我们从后往前遍历:根据那个图大的子串会包含小的子串,所以我们就处理前缀和将大的个数加到小的里面去
#include <cstdio>
#include <cstring>const int N = 1e5+5;int n, jump[N], c, r[N], dp[N];
char str[N];void getJump() {int k = 0;n = strlen(str+1);for (int i = 2; i <= n; i++) {while (k && str[i] != str[k+1])k = jump[k];if (str[i] == str[k+1])k++;jump[i] = k;}
}int main () {scanf("%s", str+1);getJump();c = 0;for (int i = jump[n]; i; i = jump[i]) {r[c] = i;c++;}memset(dp, 0, sizeof(dp));for (int i = n; i; i--) {dp[i]++;dp[jump[i]] += dp[i];}printf("%d\n", c+1);for (int i = c-1; i >= 0; i--)printf("%d %d\n", r[i], dp[r[i]]);printf("%d %d\n", n, dp[n]);return 0;
}
codeforces432D[kmp的next数组的运用]相关推荐
- KMP中next数组的理解
next数组是KMP的核心,但对于next数组我们总是有时候感觉明白了,但有时候又感觉没明白,现在我就说下我自己对KMP中next数组的理解,首先next[i]上的数字的意义,next[i]表示的是当 ...
- CodeForces - 1137B Camp Schedule(KMP的next数组+构造)
题目链接:点击查看 题目大意:给出一个主字符串s,再给出一个子字符串ss,主串和子串都是只由0或1所组成的字符串,现在要求重组主串s,要求重组后的字符串: 所包含的0与1的个数与之前保持一致 尽可能多 ...
- HDU - 1358 Period(KMP的next数组求最小循环节)
题目链接:点击查看 题目大意:给出一个长度为n的字符串,问有哪些前缀是周期性字符串 题目分析:因为n给的很大,所以肯定不能暴力判断了,我们可以巧妙的利用kmp的next数组进行判断,next数组有一个 ...
- HDU - 3746 Cyclic Nacklace(KMP的next数组判循环节)
题目链接:点击查看 题目大意:现在规定想要制作一串珍珠手链,需要用到两段一模一样的字符串首位相接而成,现在给定一个字符串,问最少需要添加几个珍珠才能满足条件 题目分析:一开始以为是个简单的模拟题,但后 ...
- KMP的Next数组应用总结
Next数组求法 不用初始化,因为Next数组是递推出来的.用法为getFail(s,strlen(s)). const int MAX_N=101000; char str[MAX_N],patte ...
- KMP的next[]数组
KMP是众多字符串问题的基础 理解next数组尤为重要 next又称前缀数组 是 它所处位置的前一个位置的元素 与 该链 链首开始 几个元素相匹配(即相同) 举个实例来说明: next对应的是该位置的 ...
- hdu3746 KMP的next数组应用,求项链首尾项链循环
题意: 给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连) 思路: KMP的简单应用只要了解next数组的意义就好说了,下面总结下 next在循环方面 ...
- Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)
题目链接: https://codeforces.com/contest/432/problem/D 题解: 做法一: KMP 显然next树上\(n\)的所有祖先都是答案,出现次数为next树子树大 ...
- HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
题目链接:点击查看 题目大意:给出一个字符串,现在问字符串不断向左循环所能形成的n个字符串中,字典序最小和最大的字符串的编号为多少,分别有多少个 题目分析:字符串最小表示法的模板题,证明和模板都是看大 ...
最新文章
- 牛!何恺明包揽2项ICCV 2017最佳论文奖!这位高考状元告诉你什么是开挂的人生
- 多协议底层攻击工具Yesinia
- 从零开始学python网络爬虫-教你从零开始学会写爬虫(Python)
- html 背景设为透明背景图片,Three.js中通过透明渲染设置默认背景图片
- 过滤选择器——子元素过滤选择器
- .Net Core建站(2):EF Core+CodeFirst数据库迁移
- 数据操纵语言 ,DML, 增删改
- html5如何绘制饼图,如何在HTML5中创建“饼图”?
- Python实例讲解 -- tkinter canvas (设置背景图片及文字)
- 字节跳动面试:java后端面试宝典
- 《21天学通C语言(第7版)》一6.6 课后研习
- 蓝桥杯:填字母游戏(第八届决赛javaB第五题) 博弈+递归+回溯+map记忆化
- 英语单词:前缀、后缀、词根---总结大全
- win10计算机更新后网络卡,win10更新后很卡怎么办
- ERR_NAME_NOT_RESOLVED错误的解决方法
- opencv(人脸检测和识别)
- SSM框架项目:米米商城后台管理系统
- Oracle数据库-02
- 根据QQ号获取昵称和头像
- Moon River