VOJ 字元加密Cipher (字尾陣列)

2021-08-28 05:28:12 字數 859 閱讀 1337

字元加密cipher

hysbz - 1031

給你乙個長度為n的字串,讓你輸出乙個字串,要求,這個字串是原字串迴圈(即每次將第乙個字元移至最後乙個位置),總共會用n個這樣的字串,然後將這些字串按照字典序排列,按照順序每次輸出這些串的最後乙個字元,這樣就形成了乙個加密過的字串。

資料範圍:n

<10

5n < 10^5

n<10

5首先,將所有字串排序,我們想到了什麼,字尾陣列啊。字尾陣列不是只能對對於字尾的一些陣列進行排序嗎?而這裡是要求將所有迴圈字串進行排序,我們可以將原字串在後面複製乙份,這樣可以保證所有字尾字串都比我們要求的字串要長。

這樣不會有什麼影響嗎?

我們可以驗證一下,如果字首都相等的話,我們才會需要比較後面一些的字元,而如果字首都相等了,後面的順序其實是無所謂的

#include

#include

#include

#include

const

int maxn =

2e5+10;

using namespace std;

char s[maxn]

;int n, m, rak[maxn]

, sa[maxn]

, tax[maxn]

, tp[maxn]

,a[maxn]

;void

debug()

inline

void

qsort()

void

suffixsort()

}int

main()

cipher加密套件(openssl)

乙個加密套件指明了ssl握手階段和通訊階段所應該採用的各種演算法。這些演算法包括 認證演算法 金鑰交換演算法 對稱演算法和摘要演算法等。在握手初始化的時候,雙方都會匯入各自所認可的多種加密套件。在握手階段,由服務端選擇其中的一種加密套件。openssl的ciphers命令可以列出所有的加密套件。op...

bzoj 1031 字元加密Cipher

題意 給出乙個字串,求將其所有迴圈串排序之後,每個串的最後乙個字元 字串長度 100000 題解 字尾陣列裸題。吧 學長拿這個當例題我還差點不會做。反正就是把字串倍增之後求字尾陣列 然後按字尾陣列來掃一遍求解 難點就是字尾排序 廢話!這裡用的是o nlogn 的倍增 基數排序方法 模板純手寫。一堆f...

BZOJ1031 字元加密Cipher

被wsh大爺拉入坑,然而我會說他現在在睡覺?題意 求乙個迴圈同構的字串的按字典序排序後末尾的字元的序列 颯颯颯我們把這個字串粘 nian 兩遍,然後颯颯颯就好啦 可以這麼輕易是因為對於乙個倍長後的字串,如果我們不能僅按前n位就將這個字串排序,當且僅當這個字串的某些字尾的完全相同,然而這樣就算不排序也...