青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

為生存而奔跑

   :: 首頁 :: 聯系 :: 聚合  :: 管理
  271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

留言簿(5)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 331734
  • 排名 - 74

最新評論

閱讀排行榜

評論排行榜

 

/*
【題目】給你N個字符串,輸出若干個子串,滿足大于N/2個字符串含有它。
【分析】先將N個字符串并成一個字符串,中間用不同的符號分割開。
        然后利用后綴數組求出Height數組,二分枚舉答案X,將Height分為若干組(如何分組?
        若Height[I]大于等于X,則屬于上一組,否則屬于新的一組),
        若某個組里面的后綴的來源是大于N/2個字符串的,則可行,繼續放大X,
        否則縮小X。若最后X=0則No Answer,否則再次分組,輸出滿足條件的組的前綴。
*/

#include
<iostream>
#include
<cmath>
#include
<cstring>
#include
<algorithm>
#include
<set>
#include
<string>
using namespace std;
#define maxn 100000+105
char s[maxn];
int sa[maxn],h[maxn],height[maxn],rank[maxn];
int k,n;
int maxlen;
int m;
int belong[maxn];
set<string>outset;
bool cmp1(const int & a,const int & b)
{
    
return (s[a]<s[b]);
}

bool cmp2(const int & a,const int & b)
{
    
return (rank[a]<rank[b] || (rank[a]==rank[b]&&
        (a
+k<n?rank[a+k]:-1)<(b+k<n?rank[b+k]:-1)));
}

void suffixArray()
{
    
int i,j;
    
for(i=0;i<n;i++)
        sa[i]
=i;
    sort(sa,sa
+n,cmp1);
    
for(i=0;i<n;i++)
    
{
        
if(i==0||s[sa[i]]!=s[sa[i-1]])
            rank[sa[i]]
=i;
        
else rank[sa[i]]=rank[sa[i-1]];
    }

    
for(k=1;k<n;k*=2)
    
{
        sort(sa,sa
+n,cmp2);
        
for(i=0;i<n;i++)
        
{
            
if( i==0 || (cmp2(sa[i],sa[i-1])||cmp2(sa[i-1],sa[i])) )
                h[sa[i]]
=i;
            
else h[sa[i]]=h[sa[i-1]];
        }

        memcpy(rank, h, n 
* sizeof(int)); 
    }


    height[
0= 0
    
for(i = 0, j = 0; i < n; i++)   
    

        
if(rank[i]>0)
        
{
            
while(s[sa[rank[i] - 1+ j] == s[i + j])  
                j
++
            height[rank[i]] 
= j; 
            
if(j > 0) j--
        }

     }

}

bool ok(int len)
{
    
int count=0;
    
bool visit[105]={0};
    
for(int i=1;i<n;i++)
    
{
        
if(height[i]<len)
        
{
            
if(count>0)
            
{
                count
=0;
                memset(visit,
0,sizeof(visit));
            }

        }

        
else
        
{
            
if(!visit[belong[sa[i-1]]])
            
{
                visit[belong[sa[i
-1]]]=1;
                count
++;
            }

            
if(!visit[belong[sa[i]]])
            
{
                visit[belong[sa[i]]]
=1;
                count
++;
            }

            
//if(count>=ceil((double)m/2))
            if(count>m/2)
                
return 1;
        }

    }

    
return 0;
}

int binarySearch()
{
    
int l=0,r=maxlen;
    
int mid;
    
while(l<r)
    
{
        mid
=(l+r+1)>>1;
        
if(ok(mid))
            l
=mid;
        
else r=mid-1;
    }

    
return l;
}

void search(int len)
{
    outset.clear();
    
bool visit[105]={0};
    
int count=0;
    
for(int i=1;i<n;i++)
    
{
        
if(height[i]<len)
        
{
            
if(count>0)
            
{
                
if(count>m/2)
                
{
                    
for(int j=0,index=sa[i-1];j<len;j++)
                        putchar(s[j
+index]);
                    putchar(
'\n');
                }

                count
=0;
                memset(visit,
0,sizeof(visit));
            }

        }

        
else
        
{
            
if(!visit[belong[sa[i-1]]])
            
{
                visit[belong[sa[i
-1]]]=1;
                count
++;
            }

            
if(!visit[belong[sa[i]]])
            
{
                visit[belong[sa[i]]]
=1;
                count
++;
            }

        }

    }

}

int main()
{
    
int tmp,j,ans;
    
bool first=1;
    
while(scanf("%d"&m)!=EOF&&m)
    
{
        
if(!first)
        
{
            printf(
"\n");
        }

        
else first=0;

        n
=0;
        maxlen
=0;
        
for(int i=0;i<m;i++)
        
{
            scanf(
"%s",s+n);
            
            
for(j=n;s[j];j++)
                belong[j]
=i;

            tmp
=j-n;
            
if(tmp>maxlen)
                maxlen
=tmp;
            
            n
+=tmp;
            
            s[n
++]='z'+i+1;
        }

        
//s[n]='$';
        suffixArray();
        ans
=binarySearch();
        
if(!ans)
            printf(
"?\n");
        
else
            search(ans);
    }

    
return 0
}
posted on 2009-08-11 13:48 baby-fly 閱讀(660) 評論(0)  編輯 收藏 引用 所屬分類: Algorithm
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            91久久视频| 国产嫩草影院久久久久| 欧美成人午夜| 欧美mv日韩mv亚洲| 欧美国产精品中文字幕| 久久夜色精品国产亚洲aⅴ | 久久久久综合一区二区三区| 性欧美长视频| 久久久免费精品视频| 久久黄色影院| 久久深夜福利| 欧美日韩在线视频观看| 国产精品久久久久久超碰| 国产精品日韩精品欧美精品| 国产夜色精品一区二区av| 精久久久久久| 日韩视频精品在线观看| 亚洲一区二区三区色| 欧美在线短视频| 欧美激情亚洲自拍| 午夜精品福利一区二区三区av | 亚洲风情亚aⅴ在线发布| 国产精品久99| 1000精品久久久久久久久| 宅男噜噜噜66一区二区| 欧美aⅴ一区二区三区视频| 亚洲女人天堂成人av在线| 久久久在线视频| 国产欧美日韩麻豆91| 亚洲一区二区视频| 亚洲成在线观看| 老司机久久99久久精品播放免费 | 夜夜嗨av一区二区三区网页| 欧美一级视频免费在线观看| 欧美午夜视频| 亚洲专区一二三| 日韩视频免费在线观看| 欧美日韩日本视频| 亚洲片在线观看| 亚洲国产成人av好男人在线观看| 欧美一区二区福利在线| 国产精品影院在线观看| 午夜精品久久久久久久久久久久久| 日韩亚洲欧美成人| 欧美日韩国产成人精品| 亚洲综合色激情五月| 亚洲午夜性刺激影院| 国产精品第13页| 欧美在线视频导航| 欧美国产日韩亚洲一区| 亚洲一区在线视频| 国产精品成人一区| 欧美a级片网站| 国产精品久久精品日日| 亚洲国产精品第一区二区三区| 欧美日韩美女在线| 久久精品国产96久久久香蕉| 久久亚洲私人国产精品va| 亚洲午夜精品一区二区三区他趣| 亚洲欧美成人一区二区三区| 一区二区在线视频播放| 亚洲综合99| 亚洲女与黑人做爰| 欧美激情一级片一区二区| 久久精品国产亚洲精品| 欧美日韩国产页| 久久蜜桃av一区精品变态类天堂| 欧美精品aa| 久久精品国产亚洲一区二区| 99综合在线| 亚洲一级片在线看| 欧美日韩情趣电影| 亚洲毛片在线观看.| 一卡二卡3卡四卡高清精品视频| 亚洲综合不卡| 亚洲午夜羞羞片| 国产嫩草一区二区三区在线观看 | 欧美中在线观看| 久久精品免费| 亚洲二区三区四区| 欧美精品一区二区三区视频 | 久久免费视频一区| 亚洲国产91精品在线观看| 久久精品官网| 欧美激情免费观看| 亚洲视频电影图片偷拍一区| 欧美精品久久99| 亚洲综合色网站| 欧美精品一区二区三区很污很色的 | 亚洲一区区二区| 久久久激情视频| 亚洲日韩欧美视频一区| 欧美日韩综合视频| 久久精品免费看| 亚洲激情网址| 久久午夜影视| 欧美与黑人午夜性猛交久久久| 亚洲成色www久久网站| 亚洲第一伊人| 先锋影音一区二区三区| 亚洲日韩欧美视频一区| 国产精品盗摄久久久| 久久久综合免费视频| 日韩一级片网址| 亚洲福利视频网站| 久久免费视频在线观看| 午夜精品福利一区二区三区av| 在线电影国产精品| 国产自产在线视频一区| 国产精品毛片高清在线完整版| 久久久另类综合| 欧美一级视频精品观看| 午夜在线观看免费一区| 亚洲综合日本| 久久成人久久爱| 久久午夜精品一区二区| 久久久91精品国产| 久久久久久电影| 欧美成人视屏| 欧美日韩一区二区三区免费看| 欧美风情在线观看| 欧美国产日韩免费| 国产精品免费网站| 国产精品国产三级国产a| 国产日韩欧美高清免费| 激情婷婷亚洲| 一区二区三区日韩欧美精品| 亚洲神马久久| 久久久蜜桃精品| 欧美大片免费| 亚洲视频一区在线| 久久国产欧美| 欧美日韩免费网站| 国产一区二区精品在线观看| 亚洲另类春色国产| 久久国产精品久久w女人spa| 欧美激情久久久| 亚洲欧美一区二区精品久久久| 免费在线成人av| 99天天综合性| 免费成人黄色| 国产视频在线观看一区| 在线午夜精品自拍| 亚洲人成网站色ww在线| 久久嫩草精品久久久精品一| 国产丝袜一区二区三区| 亚洲精品一品区二品区三品区| 亚洲欧美日韩一区在线观看| 亚洲国产黄色| 欧美日韩免费看| 99国产精品国产精品久久| 另类av导航| 久久成人免费日本黄色| 一区二区三区在线观看国产| 久久9热精品视频| 性感少妇一区| 国产午夜精品视频免费不卡69堂| 欧美一区成人| 久久免费视频网站| 亚洲日本中文字幕| 国产麻豆午夜三级精品| 国产精品伦子伦免费视频| 欧美一区二区黄| 欧美午夜剧场| 亚洲国产色一区| 国产亚洲精品一区二区| 91久久精品一区二区三区| 欧美精品免费在线观看| 99精品欧美一区二区三区| 一区二区国产日产| 在线观看成人av电影| 亚洲国产精品va在线看黑人动漫 | 国产精品第一区| 久久激情综合网| 久久婷婷国产麻豆91天堂| 亚洲免费视频在线观看| 欧美一区午夜精品| 亚洲欧美日韩电影| 国产一区二区黄| 制服丝袜亚洲播放| 久久精品成人| 欧美一区二区三区四区视频| 国产视频一区二区三区在线观看| 麻豆成人在线播放| 亚洲国产精品成人精品| 美女国产精品| 亚洲另类在线视频| 亚洲精品影院在线观看| 欧美粗暴jizz性欧美20| 亚洲黄色av| 夜夜爽av福利精品导航| 免费一级欧美片在线观看| 蘑菇福利视频一区播放| 永久久久久久| 欧美韩日一区二区| 亚洲精品国产视频| 欧美一区二区三区视频| 国产日韩一区二区三区在线播放| 亚洲一区二区毛片| 久久综合九色综合欧美就去吻|