• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            算法學社
            記錄難忘的征途
            posts - 141,comments - 220,trackbacks - 0

            題目描述:

               求一個字符串的最長回文串。串長度小于110,000。

            吐槽:

                1. O(nlogn)構造后綴數組超時... O(n)的不會... 是我寫挫了 ????
                2. 拖了一年多才重新捉這題... 該打......

            算法分析:

                直接上Manacher算法,詳解在這里
                為什么P[i] = min(P[id - (i - id)], (P[id] + id) - i) 呢? 自己畫一畫就知道了......

             1 #include<iostream>
             2 #include<cstdio>
             3 #include<cstdlib>
             4 #include<cassert>
             5 #include<cstring>
             6 using namespace std;
             7 #define re(i,n) for(int i = 0;i<n;i++)
             8 const int N = 250000;
             9 template <typename T> inline void chkmax(T &a,const T b) {if(a<b) a = b;}
            10 int num[N],P[N];
            11 char ch[N];
            12 int main(){
            13     while(~scanf("%s",ch)){
            14         int n = strlen(ch);
            15         int N = 1;
            16         num[0] = 300;
            17         re(i,n) {
            18             num[N++]=99;
            19             num[N++]=ch[i]-'a'; 
            20         }
            21         num[N++]=99;
            22         num[N++]=100;
            23         int id =0 ,mx = 1,ans = 0;
            24         for(int i=1;i<N;i++){
            25             if(mx > i) {
            26                 P[i] = min(P[2*id - i], mx - i);
            27             }
            28             else P[i] = 1;
            29             for(;num[i+P[i]]==num[i-P[i]];P[i]++);
            30             if(i+P[i]-1 >= mx){
            31                 mx = i + P[i]-1;
            32                 id = i;
            33             }
            34             chkmax(ans,P[i]-1);
            35         }
            36         cout<<ans<<endl;
            37     }
            38 }
            39 
            posted on 2012-05-02 21:26 西月弦 閱讀(519) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告經典題目
            久久久久久亚洲精品无码| 77777亚洲午夜久久多喷| 无码人妻久久一区二区三区免费丨| 国产人久久人人人人爽| 国产情侣久久久久aⅴ免费| 中文字幕日本人妻久久久免费 | 久久精品国产欧美日韩| 国产激情久久久久影院老熟女免费 | 亚洲国产成人久久精品影视 | 久久亚洲精品中文字幕| 国产成人无码久久久精品一| 777午夜精品久久av蜜臀| 久久久久久精品免费免费自慰| 久久棈精品久久久久久噜噜| 麻豆精品久久精品色综合| 久久国产影院| 香蕉久久久久久狠狠色| 91精品国产高清久久久久久io | 久久亚洲精品无码AV红樱桃| 999久久久免费精品国产| 亚洲成色999久久网站| 色综合久久天天综线观看| 久久综合狠狠综合久久综合88| 久久Av无码精品人妻系列 | 久久国产成人精品麻豆| 无码精品久久一区二区三区| 伊人久久大香线蕉AV一区二区| 久久综合九色综合久99| 久久精品国产只有精品66| 无码人妻久久一区二区三区蜜桃| 69SEX久久精品国产麻豆| 成人资源影音先锋久久资源网| 国产精品日韩欧美久久综合| 思思久久99热免费精品6| 久久久亚洲欧洲日产国码二区| 伊人色综合久久天天| 久久久www免费人成精品| 国产精品99久久免费观看| 久久无码AV一区二区三区| 72种姿势欧美久久久久大黄蕉| 欧美性猛交xxxx免费看久久久|