最小表示法

2022-05-21 01:06:03 字數 475 閱讀 7774

o(n)找到字典序最小的迴圈串

先把串複製一遍,維護指標ij表示[0,max(i,j)-1]中除min(i,j)均不合法,再維護匹配了k位

(此時min(i,j)不一定合法,但這樣的話min(i,j)一定會跳到和另乙個交換為止,則另乙個會變為新的min,這樣就合法了)

直接順序匹配s[i+k],s[j+k],若s[i+k]>s[j+k]則顯然[i,i+k]均不合法(因為[j,j+k]對應更優),所以i->i+k+1

當i>=n/j>=n就結束,此時只剩乙個合法串

注意有i=j的時候,此時若s[i+1]j(即右移到能放指標j為止)

洛谷模板

i=0,j=1,k=0;

while (ia[j+k]) i=i+k+1;

else j=j+k+1;

k=0;

} if (i==j)

}

最小表示法

最小表示法就是找出字串s的的迴圈同構串中字典序最小的乙個。那麼什麼是迴圈同構串呢。是 設s bcad 且s 是s 的迴圈同構的串。s 可以是 bcad 或者cadb,adbc,dbca 即在字串s中從i 0開始,從i迴圈到字串末尾,再從頭迴圈到i,所形成的字元就是s迴圈同構串。因為這樣的同構串不止乙...

最小表示法

最小表示法 思想 在字串迴圈同構問題中的應用 摘自周源的ppt 前言 最小表示法 比起動態規劃 貪心等思想,在當今競賽中似乎並不是很常見。但是在解決判斷 同構 一類問題中卻起著重要的作用。本文即將討論字串中的同構問題,如何巧妙地運用最小表示法來解題呢,讓我們繼續一起思考吧。到底什麼是迴圈同構的字串呢...

最小表示法

最小表示法與kmp演算法一樣都可以解決字串匹配問題,但效率更高,短,作用更大。最小表示法就是乙個字串的最小字典序。怎麼求乙個字串的最小字典序呢?首先將這個字串擴充套件一倍 建設存在d陣列裡 然後我們用三個指標i 0,j 1,k 0,來尋找最小字典序的開頭字母,為了優於kmp,我們要做到o n i表示...