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

花了半天的時間終于 AC 了
貼一下代碼:
#include<iostream>
#define?Rank(x)?rank[(x)<?(n+1)]

using?namespace?std;

char?a[100000],c[5000],b[5000],d[100000];
int?sa[5001],height[5001],rank[5001],n,sum[5001],h[5001],_sa[5001],_rank[5001],m,ans[20][5001],tr[5001],tl[5001],maxk,maxi,lft[100001],rght[100001],leftt[100001],rightt[100001];

struct?node
{
????
int?th;
????
char?s;
}r[
10000];

int?cmps(const?void?*a,const?void?*b)
{
????
return?(*(node?*)a).s-(*(node?*)b).s;
}

int?cmpth(const?void?*a,const?void?*b)
{
????
return?(*(node?*)a).th-(*(node?*)b).th;
}

void?getsa()
{
????qsort(r
+1,n,sizeof(node),cmps);
????
int?p=0;
????
for(int?i=1;i<=n;++i)
????????
if(r[i].s!=r[i-1].s)
????????{
????????????rank[r[i].th]
=++p;
????????????sa[i]
=r[i].th;
????????}
????????
else
????????{
????????????rank[r[i].th]
=p;
????????????sa[i]
=r[i].th;
????????}
?????qsort(r
+1,n,sizeof(node),cmpth);
?????
for(int?l=1;p<n;l<<=1)
?????{
?????????memset(sum,
0,sizeof(sum));
?????????memset(h,
0,sizeof(h));
?????????
for(int?i=1;i<=n;++i)
?????????????
++sum[rank[i]+1];
????????
for(int?i=1;i<=p;++i)
????????????sum[i]
+=sum[i-1];????
?????????
for(int?i=n-l+1;i<=n;++i)
????????????_sa[sum[rank[i]]
+(++h[rank[i]])]=i;
????????
for(int?i=1;i<=n;++i)
?????????????
if(sa[i]>l)
?????????????????_sa[sum[rank[sa[i]
-l]]+(++h[rank[sa[i]-l]])]=sa[i]-l;
????????memcpy(sa,_sa,
sizeof(_sa));
????????p
=0;
????????
for(int?i=1;i<=n;++i)
????????????_rank[sa[i]]
=((rank[sa[i]]==rank[sa[i-1]])&&(Rank(sa[i]+l)==Rank(sa[i-1]+l)))?p:++p;
????????memcpy(rank,_rank,
sizeof(_rank));????????????
?????}
}

void?getans()
{
????
for(int?i=1;i<=n;++i)
????????ans[
0][i]=height[i];
????
for(int?i=1;1<<i<=n;++i)
????????
for(int?j=1;j+i-1<=n;++j)
????????????ans[i][j]
=ans[i-1][j]<?ans[i-1][j+(1<<(i-1))];
}

int?askRMQ(int?s,int?t)
{
????
for(int?i=0;;++i)
????????
if(t-s<1<<i)
????????????
return?ans[i-1][s]<?ans[i-1][t-(1<<(i-1))+1];
}

void?getheight(bool?flag)?
{
????
for(int?k=0,i=1,j;i<=n;height[rank[i++]-1]=k)
????????
for(k?--k:0,j=sa[rank[i]-1];r[i+k].s==r[j+k].s;++k);
?????getans();
?????
if(flag)
?????{
?????????tr[
1]=m;
?????????
for(int?i=2;i<=m;++i)
?????????????tr[i]
=askRMQ(rank[1]<?rank[i-1],rank[1]>?rank[i-1]);
?????}
?????
else
?????{
?????????tl[
1]=m;
?????????
for(int?i=2;i<=m;++i)
?????????????tl[i]
=askRMQ(rank[1]<?rank[i-1],rank[1]>?rank[i-1]);????????????
?????}
}

int?main()
{
????scanf(
"%s",a);
????scanf(
"%s",b);
????m
=strlen(a);
????n
=strlen(b);
????
for(int?i=0;i<n;++i)
????{
????????r[i
+1].s=b[i];
????????r[i
+1].th=i+1;
????}
????getsa();
????getheight(
1);
????maxk
=-1;
????
for(int?i=0;i<m;++i)
????{
????????
if(maxk<i)
????????{
????????????
for(int?j=0;;++j)
????????????????
if(j==n||i+j==m||a[i+j]!=b[j])
????????????????{
????????????????????maxk
=i+j-1;
????????????????????maxi
=i;
????????????????????rght[i]
=j;
????????????????????
break;
????????????????}
????????}
????????
else
????????{
????????????
if(tr[maxi-i+1]>=maxk-i+1)
????????????????
for(int?j=maxk-i+1;;++j)
????????????????????
if(j==n||i+j==m||a[i+j]!=b[j])
????????????????????{
????????????????????????maxk
=i+j-1;
????????????????????????maxi
=i;
????????????????????????rght[i]
=j;????????????????????????
????????????????????}
????????????
else
????????????????rght[i]
=tr[maxi-i+1];
????????}
????}
????maxk
=-1;
????
for(int?i=0;i<n;++i)
????{
????????c[i]
=r[i+1].s=b[n-i-1];
????????r[i
+1].th=i+1;
????}
????getsa();
????getheight(
0);
????
for(int?i=0;i<m;++i)
????????d[i]
=a[m-i-1];
????
for(int?i=0;i<m;++i)
????{
????????
if(maxk<i)
????????{
????????????
for(int?j=0;;++j)
????????????????
if(j==n||i+j==m||d[i+j]!=c[j])
????????????????{
????????????????????maxk
=i+j-1;
????????????????????maxi
=i;
????????????????????lft[i]
=j;
????????????????????
break;
????????????????}
????????}
????????
else
????????{
????????????
if(tl[maxi-i+1]>=maxk-i+1)
????????????????
for(int?j=maxk-i+1;;++j)
????????????????????
if(j==n||i+j==m||d[i+j]!=c[j])
????????????????????{
????????????????????????maxk
=i+j;
????????????????????????maxi
=i;
????????????????????????lft[i]
=j;????????????????????????
????????????????????}
????????????
else
????????????????lft[i]
=tl[maxi-i+1];
????????}
????}
????
for(int?i=m-1;i>=0;--i)
????????
if(lft[i]==n&&i+n!=m)
????????????leftt[i]
=lft[i]+leftt[i+n];
????????
else
????????????leftt[i]
=lft[i];
????
for(int?i=m-1;i>=0;--i)
????????
if(rght[i]==n&&i+n!=m)
????????????rightt[i]
=rght[i]+rightt[i+n];
????????
else
????????????rightt[i]
=rght[i];
????
int?maxl=0;
????
for(int?i=0;i<m;++i)
????????maxl
>?=rightt[i]+leftt[m-i];
????
????
if(maxl<n)
????????puts(
"0");
????
else
????????printf(
"%f\n",double(maxl)/m);
????
return?0;
}

這道題是03年饒向榮論文里的一道題 有一定難度
除了T數組的求解和論文中不同外 沒有什么不同
論文中說的方法沒看懂 期望有牛人能講一下
我的方法很簡單就是通過后綴數組完成的 但大大增加了代碼長度這好象是我寫oi題目寫的最長的一道了(我太弱了) 一個不錯的開始期望以后每天都能AC并且要多
posted on 2009-04-13 23:33 250 閱讀(1573) 評論(1)  編輯 收藏 引用 所屬分類: oi

FeedBack:
# re: 病毒的DNA
2009-07-22 11:30 | xxx
這道題哪個OJ有?  回復  更多評論
  
<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

留言簿(6)

隨筆分類

隨筆檔案

文章檔案

相冊

搜索

  •  

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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精品亚洲| 亚洲欧美在线观看| 久久久久亚洲综合| 欧美连裤袜在线视频| 欧美视频在线观看免费网址| 国产精品久久久久久久免费软件 | 亚洲电影一级黄| 亚洲激情av在线| 亚洲欧美视频在线观看| 久久久一本精品99久久精品66| 久久免费少妇高潮久久精品99| 欧美成在线观看| 国产精品自拍网站| 在线国产精品一区| 中文成人激情娱乐网| 欧美专区第一页| 亚洲国产精品久久人人爱蜜臀| 日韩香蕉视频| 久久久久久97三级| 国产精品久久久久av| 一区二区三区在线免费观看| 亚洲精品久久久久久一区二区| 中国亚洲黄色| 久久五月婷婷丁香社区| 91久久精品国产91久久性色tv| 亚洲一区二区av电影| 久久青草福利网站| 国产欧美一区二区视频| 最近看过的日韩成人| 久久精品五月婷婷| 这里只有精品视频| 欧美成人免费全部观看天天性色| 国产精品美女| 99国产精品国产精品久久| 久久免费精品日本久久中文字幕| 日韩视频永久免费| 免费观看日韩| 在线不卡视频| 久久久亚洲人| 性8sex亚洲区入口| 国产精品高潮粉嫩av| 日韩一区二区精品| 蜜臀av在线播放一区二区三区| 亚洲在线免费观看| 国产精品99一区| 一区二区三区日韩在线观看| 亚洲激情影视| 欧美精品18videos性欧美| 亚洲黄色免费| 亚洲国产高清在线| 欧美成人xxx| 欧美网站在线观看| 一本色道久久综合狠狠躁的推荐| 久久久噜噜噜久久人人看| 国产精品久久久久久av福利软件| 一区二区三区国产在线| 亚洲麻豆av| 国产精品高潮呻吟久久| 亚洲综合色丁香婷婷六月图片| 日韩视频二区| 国产精品第13页| 欧美中文在线视频| 久久国产精品高清| 亚洲福利av| 亚洲国产精品日韩| 欧美日韩亚洲视频| 午夜在线不卡| 久久精品国产综合| 亚洲精品1区2区| 日韩视频精品在线观看| 国产精品久久久久久久7电影 | 日韩视频免费观看| 日韩亚洲精品电影| 国产老女人精品毛片久久| 久久美女艺术照精彩视频福利播放| 久久gogo国模啪啪人体图| 亚洲黄色免费电影| 亚洲素人在线| 伊人色综合久久天天| 亚洲激情成人在线| 国产精品午夜在线| 欧美xxx成人| 欧美日韩一区二区在线视频| 欧美一区免费视频| 欧美电影免费观看大全| 午夜一区不卡| 老色鬼精品视频在线观看播放| 亚洲美女黄网| 香蕉久久夜色| 99精品99久久久久久宅男| 香蕉尹人综合在线观看| 亚洲麻豆国产自偷在线| 欧美一激情一区二区三区| 日韩亚洲欧美成人| 久久精品国产欧美亚洲人人爽| 一本久久青青| 久久久久**毛片大全| 亚洲图色在线| 久久综合亚洲社区| 久久大逼视频| 国产精品yjizz| 亚洲大胆人体视频| 精品成人国产| 亚洲一区二区三区四区中文 | 国产一区二区三区在线观看免费视频| 亚洲福利视频网站| 狠狠色狠狠色综合日日tαg| 亚洲最新中文字幕| 日韩视频中午一区| 欧美h视频在线| 久久久噜噜噜久噜久久 | 99人久久精品视频最新地址| 一区二区欧美在线观看| 亚洲国产另类 国产精品国产免费| 夜夜夜精品看看| aa级大片欧美三级| 老司机精品久久| 老司机精品导航| 国产自产精品| 欧美一区二区免费| 久久丁香综合五月国产三级网站| 国产精品v亚洲精品v日韩精品| 亚洲大片av| 日韩视频在线免费观看| 免费欧美网站| 欧美黄网免费在线观看| 伊人婷婷欧美激情| 久久精品国产77777蜜臀| 久久九九99视频| 国产一区二区三区高清播放| 午夜精品久久久久久久白皮肤| 亚洲一区二区三区成人在线视频精品 | 国内久久婷婷综合| 欧美一区中文字幕| 久久九九99| 精品1区2区3区4区| 久久亚洲一区二区| 欧美顶级艳妇交换群宴| 在线精品福利| 久久综合精品国产一区二区三区| 久热精品视频在线免费观看| 国产一区二区三区四区在线观看| 欧美一区二区三区四区在线观看地址| 午夜一区二区三区不卡视频| 国产一区在线播放| 久久久久久久一区| 亚洲国产精品一区二区www在线| 亚洲精品韩国| 欧美视频日韩视频在线观看| 亚洲天堂成人| 久久黄色网页| 亚洲精品少妇30p| 欧美日本一区二区三区| 一区二区三区国产在线| 午夜精品久久久| 国产一区二区三区日韩| 久久综合伊人77777| 亚洲精品黄色| 欧美一级专区免费大片| 国产亚洲欧美激情| 亚洲视频日本| 蜜臀久久99精品久久久画质超高清| 伊甸园精品99久久久久久| 欧美激情精品久久久久久黑人| 日韩亚洲国产精品| 欧美中文字幕在线| 99国产一区| 国产伦精品一区二区三| 玖玖精品视频| 亚洲午夜电影| 欧美成人蜜桃| 亚洲男人的天堂在线观看| 国产亚洲综合精品| 欧美精品v日韩精品v韩国精品v| 一本色道久久加勒比88综合| 亚洲国产精品电影在线观看| 欧美色欧美亚洲另类七区| 欧美一区二区免费观在线| 国产日韩欧美二区| 欧美国产综合| 久久综合九色综合欧美狠狠| 欧美日韩精品一本二本三本| 国产精品实拍| 久久不射电影网| 亚洲在线观看免费视频| 国产精品美女久久久久久2018 | 国产精品嫩草影院av蜜臀| 亚洲精品国精品久久99热| 久久精品成人欧美大片古装| 亚洲黑丝在线| 国产一区免费视频|