學習筆記 最小表示法

2021-10-07 21:49:10 字數 669 閱讀 8077

最小表示法:用於解決字串s的迴圈同構串中字典序最小的那個,稱為s的最小表示。

eg. s=「abcd」,則其迴圈同構串為:「abcd」,「dabc」,「cdab」,「bcda」,最小的為"abcd"

演算法思路:因為迴圈同構問題,所以可以先複製乙份s到s後邊,形成ss。之後雙指標i,j向後掃瞄,i,j所指代表以i,j為開始的迴圈同構串,如果i+k與j+k不匹配了,且不妨令s[i+k]>s[j+k],則會有i+1,…i+k代表的都不是最小表示,所以i直接變成i+k+1。

《演算法競賽高階指南》上的板子:

#include using namespace std;

const int maxn=1e5+10;

char s[maxn<<1];

int n;

int solve()

else

} int ans=min(i,j);

return ans;

}int main()

else

} int ans=min(l,r);

return ans;

}int main()

else

} int ans=min(i,j);

return ans;

}int main()

學習筆記 最小表示法

給定乙個長度為n,可旋轉的字串環,求從哪個位置斷開的長度為n的字串字典序最小 大 以最小為例,最大同理 bzoj1398 vijos1382尋找主人 necklace 當求出最小表示法之後,掃一遍即可比較兩個不可翻轉的環是否本質相同,比較本質應該是其常見用途吧 1 include2 include3...

學習筆記 最小表示法

一 最小表示法解決的問題 找到乙個字串的迴圈同構串中字典序最小的那個串。二 字串的迴圈同構 比如長度為5字串 abcde 它的5個迴圈同構串有 abcde,bcdea,cdeab,deabc,eabcd 其中字典序最小的串為 abcde 三 求 abcde 的字典序最小的迴圈同構串 1.把 abcd...

筆記 最小表示法

引言 用於判斷兩個字串不計順序是否相等的問題。引例 a abcd b cdba 分析 若乙個乙個的列舉的話,時間複雜度高達 由這個簡單的題得出來的簡單思想 如果兩列數是相同的,那麼他們排完序過後的數列也一定是相同的 專有名詞 迴圈同構 字串s abcd 那麼它的迴圈同構就有 bcda cdab da...