感覺思路還是非常神奇的。另外注意一下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 ...