Tandem Repeats?

最爱丁珰發表於2024-03-17

先來看看官方解答

官解的大意就是說,如果我們列舉\(l\)\(r\),這樣時間複雜度是會退化到\(O(n^3)\)的,而我們如果利用轉換物件法,考慮列舉\(d\),這樣就可以在\(O(1)\)的時間內進行轉移,至於如何轉移可以看官解(這個時候一定要記住只計數就好了,不用把每一個位置的匹配情況全部記下來)

然後來看看我的做法

其實本質上跟官方解答是差不多的,但是就是沾了個DP的名義

\(f[i][j]\)表示如果以第\(i\)個字元為開頭且第\(i\)個字元匹配到第\(j\)個字元(\(j>i\)),能匹配的最大長度

比如這幅圖,\(a\)\(f\)的值就是\(2\)

然後接下來就很easy了