最小表示法

2021-10-24 20:58:59 字數 1428 閱讀 5187

​ 給定乙個字串s[1~n],如果不斷把最後乙個字元放到開頭,最終會得到n個字串,稱這n個字串是迴圈同構的。這些字串中字典序最小的乙個,稱為字串s的最小表示法。可以在o(n

)o(n)

o(n)

的時間內找出字串的最小表示法。

/*最大表示法*/

intget_max

(char s)

}return

min(i, j);}

/*最小表示法*/

intget_min

(char s)

}return

min(i, j)

;}

luogu p1368 【模板】最小表示法

題意:找出乙個序列的最小表示法,序列長度:n

<=3

∗105

n <= 3*10^5

n<=3

∗105

題解:最小表示法模板題

**

#include

using

namespace std;

intconst n =

6e5+10;

typedef

long

long ll;

int n, t, m, a[n]

;int

get_min()

}return

min(i, j);}

intmain()

int idx=

get_min()

;for

(int i = idx; i < idx + n;

++i)

return0;

}

hdu-2609 how many

題意: 每組資料給出 n 個可迴圈字串,問有多少種不同的字串

題解:將每個字串的最小(大)表示法計算出來,然後丟到set中判重

**

#include

using

namespace std;

intconst n =

1e4+10;

char str[n]

,temp[n]

;int

get_max

(char s)

}return

min(i, j);}

intmain()

printf

("%d\n"

,s.size()

);}return0;

}

最小表示法

最小表示法就是找出字串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表示...