首页 > 其他分享 >POJ-2752-Seek the Name, Seek the Fame

POJ-2752-Seek the Name, Seek the Fame

时间:2023-02-02 11:33:52浏览次数:43  
标签:name int prefix 2752 str Seek Fame string




Seek the Name, Seek the Fame

Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 43   Accepted Submission(s) : 24


Problem Description


The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-born babies. They seek the name, and at the same time seek the fame. In order to escape from such boring job, the innovative little cat works out an easy but fantastic algorithm: 

Step1. Connect the father's name and the mother's name, to a new string S. 
Step2. Find a proper prefix-suffix string of S (which is not only the prefix, but also the suffix of S). 

Example: Father='ala', Mother='la', we have S = 'ala'+'la' = 'alala'. Potential prefix-suffix strings of S are {'a', 'ala', 'alala'}. Given the string S, could you help the little cat to write a program to calculate the length of possible prefix-suffix strings of S? (He might thank you by giving your baby a name:) 


 



Input


The input contains a number of test cases. Each test case occupies a single line that contains the string S described above. 

Restrictions: Only lowercase letters may appear in the input. 1 <= Length of S <= 400000. 


 



Output


For each test case, output a single line with integer numbers in increasing order, denoting the possible length of the new baby's name.


 



Sample Input


ababcababababcabab aaaaa


 



Sample Output


2 4 9 18 1 2 3 4 5


 



Source


PKU




题目分析:

题目意思是让你输出所有首尾相同子串的长度  例如abab cabab ababcabab       有首ab尾ab   首 abab尾abab    首ababcabab尾 ababcabab        ababcababababcabab 

   i     0      1       2        3       4      5     6

      a    b     a     b    a    b

  j     -1     0        0       1       2      3     4

p[6]=4,p[5]=3,p[4]=2,p[3]=1,p[2]=0,p[1]=0,p[0]=-1.

到6时匹配失败跳转到p[6]=4位置说明4 符合要求   p[4]=2 说明2符合 所以  有  2  4  6

#include<cstdio>
#include<cstring>
const int M=400000+10;
int len;
char str[M];
int p[M],a[M];
void getp()
{
int i=0,j=-1;
p[i]=j;
while(i<len)
{
if(j==-1||str[i]==str[j])
{
i++;j++;
p[i]=j;
}
else j=p[j];
}
}
int main()
{
while(~scanf("%s",str))
{
len=strlen(str);
getp();
int j=0;
for(int i=len;p[i]!=-1;i=p[i])// 此处就是统计相同首尾的长度
a[j++]=i;
for(int i=j-1;i>=0;i--)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}




标签:name,int,prefix,2752,str,Seek,Fame,string
From: https://blog.51cto.com/u_14235050/6033425

相关文章

  • CF1779A Hall of Fame 题解
    可能更好的阅读体验题目传送门题目翻译有\(n\)个纪念碑以及对应的\(n\)个台灯。给定一个由L和R组成的序列\(a\),代表台灯的朝向。如果第\(i\)个台灯为L,代......
  • django 和restfamework 文档
    官方网站Github源码1.11版英文文档1.11版中文文档DjangoBook教程TangeWithDjango教程DRF中文文档......
  • fread()和fwrite() fseek()
    1.函数功能 用来读写一个数据块。2.一般调用形式 fread(buffer,size,count,fp);fwrite(buffer,size,count,fp);3.说明 (1)buffer:是一个指针,对fread来说,它是读入数据的存......
  • Seek 策略以及在有 B 帧情况下的处理
    在知识星球分享的文章,顺便也在公众号发表一下,不足之处,欢迎指正。​​一个关于音视频领域专业问答的小圈子!!​​最近在做Seek相关功能时遇到的问题排查,顺便也学到了一些新的......
  • 2752. 仙人掌图
    题目链接2752.仙人掌图如果某个无向连通图的任意一条边至多只出现在一条简单回路(simplecycle)里,我们就称这张图为仙人掌图(cactus)。所谓简单回路就是指在图上不重复经过......
  • 18:文件对象常用方法和属性总结_seek()任意位置操作
    文件对象封装了文件相关的操作。在前面我们学习了通过文件对象对文件进行读写操作。本节我们详细列出文件对象的常用属性和方法,并进行说明。###文件对象的属性###文件......
  • C语言将二进制文件写入内存malloc fopen fseek fread
    ///20221118malloc获取文件大小,并读取内存中///voidFuncation3(){//保存读入到内存中的结果//创建一个buffer,用来将打开的文件放入申请的内存中char*......
  • 文件操作--seek函数
    """测试目标1.r+w+a+区别2.文件指针对数据读取的影响"""#r+:r没有该文件则报错;文件指针在开头,所以能读取出来数据#f=open('test1.txt','r+')#f=o......
  • 一本通 1458:Seek the Name, Seek the Fame
    给定若干字符串(这些字符串总长≤4×105​​),在每个字符串中求出所有既是前缀又是后缀的子串长度。 这题应该用kmp.但这里记一下字符串哈希 #include<iostream>#i......
  • 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放
    作者:程序员小冰,GitHub主页:​​https://github.com/QQ986945193​​新浪微博:​​http://weibo.com/mcxiaobing​​首先给大家看一下我们今天这个最终实现的效果图:当然,......