BZOJ1031 JSOI2007 字元加密

2022-05-16 03:08:44 字數 840 閱讀 3870

喜歡鑽研問題的js同學,最近又迷上了對加密方法的思考。一天,他突然想出了一種他認為是終極的加密辦法

:把需要加密的資訊排成一圈,顯然,它們有很多種不同的讀法。例如下圖,可以讀作:

jsoi07 soi07j oi07js i07jso 07jsoi 7jsoi0把它們按照字串的大小排序:07jsoi 7jsoi0 i07jso jsoi07

oi07js soi07j讀出最後一列字元:i0o7sj,就是加密後的字串(其實這個加密手段實在很容易破解,鑑於這是

突然想出來的,那就^^)。但是,如果想加密的字串實在太長,你能寫乙個程式完成這個任務嗎?

輸入檔案包含一行,欲加密的字串。注意字串的內容不一定是字母、數字,也可以是符號等。

輸出一行,為加密後的字串。

jsoi07

i0o7sj

對於100%的資料字串的長度不超過100000。

直接把原串複製一遍接在後面然後跑字尾陣列即可。

附**:

#include #include const int n = 400050;

char s[n];

int sa[n];

int c[n], tmp[2][n];

int main()

for (int i = 0; i < n; ++i)

if (sa[i] < n / 2)

putchar(s[(sa[i] + n / 2 - 1) % (n / 2)]);

return 0;

}

BZOJ1031(字尾陣列)

題意 給出乙個字串,求出所有全排列後,按字典序從小到大排序,每個串的最後一位組成的字串 題解 字尾陣列搞一搞,將他複製一遍,跑乙個sa,那麼對於長度n以後的字串在sa中可以不管,算是個模板題吧 include include include include include include inclu...

bzoj 1031 字元加密Cipher

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

BZOJ1031 字元加密Cipher

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