432D Prefixes and Suffixes
题目大意
给你一个串
对于一个子串如果它既是前缀又是后缀
输出它的长度以及它在原串中一共出现了多少次
分析
对于既是前缀又是后缀的判断和126B相同
然后我们只需要记录每个不同的z[i]出现了多少次
然后对于每个合法z[i]输出所有大于z[i]的数的出现次数即可
因为如果长度为z[i]的前缀是最长前缀
那么小于z[i]的前缀一定合法
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
char s[];
int n,z[],sum[],cnt,ans[];
inline void get_z(){
int i,j,k,l=,r=;
for(i=;i<n;i++){
if(i<=r)z[i]=min(r-i+,z[i-l]);
while(i+z[i]<n&&s[z[i]]==s[z[i]+i])z[i]++;
if(i+z[i]->r)r=i+z[i]-,l=i;
}
}
int main(){
int i,j,k;
scanf("%s",s);
n=strlen(s);
get_z();
for(i=;i<n;i++){
sum[z[i]]++;
if(z[i]==n-i)ans[++cnt]=z[i];
}
printf("%d\n",cnt+);
sort(ans+,ans+cnt+);
for(i=n-;i>;i--)sum[i]+=sum[i+];
for(i=;i<=cnt;i++)printf("%d %d\n",ans[i],sum[ans[i]]+);
printf("%d %d\n",n,);
return ;
}
432D Prefixes and Suffixes的更多相关文章
- Codeforces 432D Prefixes and Suffixes(KMP+dp)
		题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次. 解题思路:依据性质能够依据KMP算法求出 ... 
- Codeforces 432D Prefixes and Suffixes  kmp
		手动转田神的大作:http://blog.csdn.net/tc_to_top/article/details/38793973 D. Prefixes and Suffixes time limit ... 
- codeforces 432D Prefixes and Suffixes
		由于包含了前缀与后缀,很容易想到用KMP去算前缀与后缀的公共缀.另外要计算某个后缀在整个串中出现的次数,由于后缀自动机是比较容易求的,然后就直接上后缀自动机了.先分别用KMP算法与后缀自动机跑一遍,然 ... 
- codeforces - 432D Prefixes and Suffixes (next数组)
		http://codeforces.com/problemset/problem/432/D 转自:https://blog.csdn.net/tc_to_top/article/details/38 ... 
- Codeforces 432D Prefixes and Suffixes:KMP + dp
		题目链接:http://codeforces.com/problemset/problem/432/D 题意: 给你一个字符串s,让你找出所有既是前缀又是后缀的子串,并输出它们分别出现了多少次. 题解 ... 
- Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)
		题目链接: https://codeforces.com/contest/432/problem/D 题解: 做法一: KMP 显然next树上\(n\)的所有祖先都是答案,出现次数为next树子树大 ... 
- codeforces432D  Prefixes and Suffixes(kmp+dp)
		转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud D. Prefixes and Suffixes You have a strin ... 
- Codeforces Round #246 (Div. 2)  D. Prefixes and Suffixes(后缀数组orKMP)
		D. Prefixes and Suffixes time limit per test 1 second memory limit per test 256 megabytes input stan ... 
- Codeforces 432 D. Prefixes and Suffixes
		用扩展KMP做简单省力..... D. Prefixes and Suffixes time limit per test 1 second memory limit per test 256 meg ... 
随机推荐
- Windows DiskPart
			win+r打开运行窗口,输入diskpart命令,按回车键或点击确定按钮即可打开如下所示界面: 输入help可以打印帮助信息 List Disk:显示本机的所有磁盘,以便正确操作目标磁盘 Select ... 
- jdk下载安装后为什么要设置环境变量?
			因为电脑不知道javac这个命令是在C:\Program Files\JAVA\jdk1.8.0_65\bin的这个路径下面,所以我们要设置好环境变量,来让电脑知道其路径 
- poj-2289.jamies contact groups(二分答案  + 二分多重匹配)
			Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 9227 Accepted: ... 
- React手稿之 React-Saga
			Redux-Saga redux-saga 是一个用于管理应用程序副作用(例如异步获取数据,访问浏览器缓存等)的javascript库,它的目标是让副作用管理更容易,执行更高效,测试更简单,处理故障更 ... 
- JS—图片压缩上传(单张)
			*vue+webpack环境,这里的that指到vue实例 <input type="file" name="file" accept="ima ... 
- C#传特定的值,获得特定的数组排序
			一,在实际业务中,我们会有当我们传任何值进来时,我们要有特定的排序,,比如传进来的是"生物", "历史","化学", 但实际上我们需要的是& ... 
- Vue/React如何优雅的一劳永逸的注册路由及组件
			原文链接: 本人掘金文章 假如图片看不清晰可前往掘金原文预览 官方文档: 组建注册 路由注册 未优化版: 在Vue官方文档 中,我们通过 Vue.component('MyComponentNam ... 
- nginx location配置讲解
			location语法:表示uri方式定位 基础语法有三种: location = pattern {} 精准匹配 location pattern {} 一般匹配 location ~ pattern ... 
- 解析安装mysql
			大多数人在结束咱们前面学习的基础知识的时候,其实一脸懵逼,不过我们已经开始步入了另一个新的高度,针对基础知识还是必须巩固针对性的进行补充,可以分模块总结:比如基础知识的数据结构---->函数-- ... 
- nodejs http服务器简单搭建
			var http = require('http') // 1. 创建 Server var server = http.createServer() // 2. 监听 request 请求事件,设置 ... 
