poj3693 字尾陣列 RMQ

2021-07-22 04:46:42 字數 798 閱讀 6506

感覺思路還是非常神奇的。另外注意一下strlen好像是個on的函式。。。日狗。。tle了乙個晚上。

#include#include#include#includeusing namespace std;

#define maxn 100005

#define forup(i,a,b) for(int i=(a);i<=(b);i++)

#define fordown(i,b,a) for(int i=b;i>=a;i--)

#define rank rk

int n;

int a[maxn];

int sum[maxn],rk[maxn],r1[maxn],r2[maxn],sa1[maxn],sa2[maxn],height[maxn];

void solve()

height[1]=0;int l=0;

forup(i,1,n)//其實感覺最後直接用rank的順序來搞亦可以,但是好像並沒有人這麼寫那就算了。。。

}}int dp[maxn][20];

void getrmq()

} } int rmq_query(int l,int r)

else if(step==mmax)

a[cnt++]=l;

} }

int len=-1,st;

for(int i=1;i<=n&&len==-1;i++)

} }

printf("case %d: ",++cas);

for(int i=st-1,j=0;j

poj 3693 字尾陣列 RMQ

這道題是字尾陣列的乙個典型應用。求乙個串中連續重複次數最多的乙個子串。做這道題的時候要把握住,連續重複 和 次數最多這兩個關鍵,才能有突破。下面的思路是照搬大牛的 大神不要打我 在字尾陣列神文中有這題的題解。比較容易理解的部分就是列舉長度為l,然後看長度為l的字串最多連續出現幾次。既然長度為l的串重...

POJ 3693 字尾陣列 RMQ

點選開啟鏈結 題意 問連續重複部分最多的串是什麼,不能重疊,且我們要字典序最小的串如xbcabcab,有bcabca重複次數為2,cabcab重複次數也為2,那麼要前邊那個 思路 以前寫過乙個類似的,spoj 687,這個只是求連續重複部分最多的串的次數,並不需要將按字典序最小串輸出,那麼我們可以用...

字尾陣列 poj 3693

題目 給出乙個串,求重複次數最多的連續重複子串 列舉長度為l,然後看長度為l的字串最多連續出現幾次。既然長度為l的串重複出現,那麼str 0 str l str 2 l 中肯定有兩個連續的出現在字串中。那麼就列舉連續的兩個,然後從這兩個字元前後匹配,看最多能匹配多遠。即以str i l str i ...