HihoCoder1415字尾陣列三 重複旋律3

2022-04-30 15:18:11 字數 996 閱讀 2408

時間限制:5000ms

單點時限:1000ms

記憶體限制:256mb

描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道乙個**旋律被表示為長度為 n 的數構成的數列。小hi在練習過很多曲子以後發現很多作品中的旋律有共同的部分。

旋律是一段連續的數列,如果同一段旋律在作品a和作品b中同時出現過,這段旋律就是a和b共同的部分,比如在abab 在 bababab 和 cabacababc 中都出現過。小hi想知道兩部作品的共同旋律最長是多少?

輸入共兩行。一行乙個僅包含小寫字母的字串。字串長度不超過 100000。

輸出一行乙個整數,表示答案。

樣例輸入

abcdefg

abacabca

樣例輸出

3

#include#include

#include

#include

#include

using

namespace

std;

const

int maxn=210000

;int

rank[maxn],cnta[maxn],cntb[maxn],a[maxn],b[maxn];

intsa[maxn],tsa[maxn],ht[maxn];

intans,n,ch[maxn];

char

str1[maxn],str2[maxn];

void

solve()

for(int l=1;rank[sa[n]]1

)

}for (i=1,j=0;i<=n;i++)

}int

main()

printf(

"%d\n

",ans);

return0;

}

沒有找到原因,開始用字串一直錯,改成陣列就ac了。也不知道為什麼。過幾天再看看吧。

hihocoder1415 字尾陣列三 重複旋律3

傳送門 題解 考慮求出兩串合在一起 中間加分隔符 字尾陣列,就是要求任意在兩個串中的 i,j min i leq k leq j 的最大值。考慮 i,j 一定是滿足 i j 1 且合法的時候最優。詳情見 hihocoder 解題方法提示 include include include include...

hihocoder 字尾陣列

時間限制 5000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道乙個 旋律被表示為長度為 n 的數構成的數列。小hi在練習過很多曲子以後發現很多作品自身包含一樣的旋律。旋律是一段連續的數列,相似的旋律在原數列可重疊。比如在1 2 3 2 3 ...

hihocoder1465 字尾自動機 迴圈同構

hihocoder1465 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道一段 旋律可以被表示為一段數構成的數列。小hi發現旋律可以迴圈,每次把一段旋律裡面最前面乙個音換到最後面就成為了原旋律的 迴圈相似旋律 還可以對 迴圈相似旋律 進行相同的變換能繼續得到原串的 迴圈相似旋律 小hi對此產生了...