題意:
給出乙個字串,求將其所有迴圈串排序之後,每個串的最後乙個字元;
字串長度<=100000;
題解:
字尾陣列裸題。。吧
學長拿這個當例題我還差點不會做。。。
反正就是把字串倍增之後求字尾陣列;
然後按字尾陣列來掃一遍求解;
難點就是字尾排序(廢話!);
這裡用的是o(nlogn)的倍增+基數排序方法;
模板純手寫。。一堆for迴圈也是有毒。。
原理上就是利用倍增的思想,將每次的排序轉化為二元組的排序問題;
而二元組的排序問題可以利用基數排序o(n)解決而已;
寫**的時候好費勁啊。。。碼力果然不夠強;
30行模板4陣列,orz popoqqq 60行sa;
**:
#include#include#include#define n 210000
#define s 256
using namespace std;
char str[n];
int rank[n],tr[n],hash[n],sa[n];
int main()
for(i=0;i>1))
printf("%c",str[sa[i]+(n>>1)-1]);
} return 0;
}
BZOJ1031 字元加密Cipher
被wsh大爺拉入坑,然而我會說他現在在睡覺?題意 求乙個迴圈同構的字串的按字典序排序後末尾的字元的序列 颯颯颯我們把這個字串粘 nian 兩遍,然後颯颯颯就好啦 可以這麼輕易是因為對於乙個倍長後的字串,如果我們不能僅按前n位就將這個字串排序,當且僅當這個字串的某些字尾的完全相同,然而這樣就算不排序也...
BZOJ1031 JSOI2007 字元加密
喜歡鑽研問題的js同學,最近又迷上了對加密方法的思考。一天,他突然想出了一種他認為是終極的加密辦法 把需要加密的資訊排成一圈,顯然,它們有很多種不同的讀法。例如下圖,可以讀作 jsoi07 soi07j oi07js i07jso 07jsoi 7jsoi0把它們按照字串的大小排序 07jsoi 7...
提高專案27 1 字元加密
任務和 小明請你寫乙個程式,在給小麗寫情書時,再不用費功夫自己 翻譯 原信中每乙個字元加密為其後的第4個字元。例,輸入i love u,輸出m pszi y。檔名 main.c 完成日期 2016.7.7 問題描述 小明請你寫乙個程式,在給小麗寫情書時,再不用費功夫自己 翻譯 原信中每乙個字元加密為...