日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 2217:Secretary(后缀数组)

發布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 2217:Secretary(后缀数组) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意:求兩個字符串的公共子串。

分析:

? 模板題,將兩個字符串接起來用不會出現的字符分割,然后求分屬兩個字符串的相鄰后綴lcp的最大值即可。

代碼:

program work; typearr=array[0..20001]of longint; varsa,rank,b,tmp,lcp:arr;n,i,m,l,u,ans,t:longint;s,s1,s2:ansistring;ch:char; function compare(i,j,k:longint):longint; var ri,rj:longint; beginif rank[i]<>rank[j] then exit(ord(rank[i]<rank[j]))elsebeginif i+k<=n then ri:=rank[i+k] else ri:=-1;if j+k<=n then rj:=rank[j+k] else rj:=-1;exit(ord(ri<rj));end; end; procedure qsort(l,h,k:longint; var a:arr); var i,j,t,m:longint; begin i:=l; j:=h;m:=a[(i+j) div 2];repeat while compare(a[i],m,k)=1 do inc(i); while compare(m,a[j],k)=1 do dec(j); if i<=j thenbegin t:=a[i]; a[i]:=a[j]; a[j]:=t; inc(i); dec(j); end; until i>j;if i<h then qsort(i,h,k,a); if j>l then qsort(l,j,k,a); end; procedure work_sa(s:ansistring; var sa:arr); var k,i:longint; beginfor i:=1 to n do begin sa[i]:=i; rank[i]:=ord(s[i]); end;k:=1;while k<=n dobeginqsort(1,n,k,sa);tmp[sa[1]]:=1;for i:=2 to n dotmp[sa[i]]:=tmp[sa[i-1]]+compare(sa[i-1],sa[i],k);rank:=tmp;k:=k*2;end; end; function max(x,y:longint):longint; beginif x>y then max:=x else max:=y; end; procedure work_lcp(s:ansistring;var sa,lcp:arr); var i,j,h:longint; beginfor i:=1 to n do rank[sa[i]]:=i;h:=0; lcp[1]:=0; sa[0]:=0;rank[0]:=0;for i:=1 to n dobeginj:=sa[rank[i]-1];if h>0 then dec(h);while (i+h<=n)and(j+h<=n) dobeginif s[i+h]<>s[j+h] then break; inc(h);end;lcp[rank[i]-1]:=h;end; end; beginreadln(u);for l:=1 to u dobeginreadln(s1); readln(s2);s:=s1+'@'+s2;t:=length(s1);n:=length(s); work_sa(s,sa);work_lcp(s,sa,lcp); ans:=0;for i:=1 to n-1 do beginif ((sa[i]<=t)and(sa[i+1]>=t+2))or((sa[i+1]<=t)and(sa[i]>=t+2)) then ans:=max(ans,lcp[i]);end;writeln('Nejdelsi spolecny retezec ma delku ',ans,'.');end; end. View Code

?

轉載于:https://www.cnblogs.com/qtyytq/p/5508405.html

總結

以上是生活随笔為你收集整理的POJ 2217:Secretary(后缀数组)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。