poj2752SeektheName,SeektheFame aoc 2752v

Seek the Name, Seek the Fame
Time Limit:2000MSMemory Limit:65536K
Total Submissions:6473Accepted:2991

Description

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

Step1. Connect the father's name and the mother's name, to a newstring S.
Step2. Find a proper prefix-suffix string of S (which is not onlythe 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 towrite a program to calculate the length of possible prefix-suffixstrings of S? (He might thank you by giving your baby aname:)

Input

The input contains a number of test cases. Each test case occupiesa single line that contains the string S describedabove.

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

Output

For each test case, output a single line with integer numbers inincreasing order, denoting the possible length of the new baby'sname.

Sample Input

ababcababababcabab
aaaaa

Sample Output

2 4 9 18
1 2 3 4 5
题意:找串的前缀与后缀匹配长度;主要理解next[i]的意义。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int next[1000010],m;
char s[1000010];

void get_next()
{
  int i=0,j=-1;
      next[0]=-1;
  while(i<m)
    {
            if(j==-1||s[i]==s[j])  
          {
                    
                     i+=1;
                        j+=1;
                        next[i]=j;
           }
            else j=next[j];
      }
}

void output(int n)
{
        if(next[n]!=0)
       {
            output(next[n]);
             printf("%d ",next[n]);
       }
}

int main()
{
        while(scanf("%s",s)!=EOF)
    {
            m=strlen(s);
         get_next();
          output(m);
           printf("%dn",m);
    }
    return 0;
}
//////////////////////////////////////////////////////////////////////////////////////
引用:http://blog.sina.com.cn/s/blog_6ec5c2d00100tnah.html

#include<iostream>


#include<string.h>


usingnamespacestd;





charP[400010];


intpre[400010];


intm;








voidCOMPUTE_PREFIX_FUNCTION(char*P)


{


pre[1] =0;





intq = 0;





for(inti=2; i<=m; i++)


{


while(q>0 && P[q+1] != P[i])


q = pre[q];


if(P[q+1] == P[i])


q++;





pre[i] = q;


}


}





voidoutput(inti)


{


if(pre[i]!=0)


{


output(pre[i]);


printf("%d ",pre[i]);


}


}


intmain()


{


while(scanf("%s",P)!=EOF)


{


m = strlen(P);


for(inti=m; i>=1; i--)


P[i] = P[i-1];





COMPUTE_PREFIX_FUNCTION(P);





output(m);


printf("%dn",m);


}


return0;


}

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/134211.html

更多阅读

法国葡萄酒等级介绍 法国葡萄酒产区介绍

1935年法国通过了大量关于葡萄酒质量控制的法律。这些法律建立了一个原产地控制命名系统,并由一专门的监督委员会(原产地命名国家学会)来管理。此后,法国便拥有了一个世界上最早的葡萄酒命名系统,以及最严格的关于葡萄酒制作和生产

怎样挑选红酒 精 怎么挑选红酒杯

随着生活质量的提高,红酒慢慢为我们所熟悉,当我们面对酒庄里玲琅满目的红酒时,该如何挑选呢?怎样挑选红酒 精——步骤/方法怎样挑选红酒 精 1、看酒的等级,有些国家会给红酒分不等级,例如法国把红酒分为4个等级,最好的一级是法定产区葡萄

CFHClearing宣布推出ClearVision,拓展产品范围 aoc clear vision

专注于外汇PoP解决方案的伦敦银行间流动性提供商CFHClearing宣布推出名为ClearVision的新产品组合。该产品组合涵盖六种卖方交易业务,对PoP解决方案和交易技术进行了整合,主要针对一二级的经纪商。经纪商能够将自己的流动性独立连接

红酒知识大全(五 红酒基础知识大全

波尔多地区概况波尔多,法国西南部城市、港口。位于加龙河下游,距大西洋98公里,是阿基坦大区和纪龙德省(GIRONDE)首府所在地。波尔多港是法国连接西非和美洲大陆最近的港口,是西南欧的铁路枢纽。波尔多是法国AOC第一大产区,全世界最重要的葡

HTC昔日人气王G17最新报价为2480元 aoc i2480sxd

2012年7月24日,HTC G17在htc中文网旗下加盟商家的最新报价为2480元,目前这款手机的报价比较的稳定。该机的配件为:单电单充、耳机、数据线等。HTCG17是一款双核处理器的多媒体智能机。有喜欢的朋友可与商家联系!图为 HTCG17  HTCG1

声明:《poj2752SeektheName,SeektheFame aoc 2752v》为网友販賣丶寂寞分享!如侵犯到您的合法权益请联系我们删除