喜歡鑽研問題的js 同學,最近又迷上了對加密方法的思考。一天,他突然想出了一種他認為是終極的加密辦法:把需要加密的資訊排成一圈,顯然,它們有很多種不同的讀法。
例如『jsoi07』,可以讀作: jsoi07 soi07j oi07js i07jso 07jsoi 7jsoi0 把它們按照字串的大小排序: 07jsoi 7jsoi0 i07jso jsoi07 oi07js soi07j 讀出最後一列字元:i0o7sj,就是加密後的字串(其實這個加密手段實在很容易破解,鑑於這是突然想出來的,那就^^)。 但是,如果想加密的字串實在太長,你能寫乙個程式完成這個任務嗎?
輸入格式:
輸入檔案包含一行,欲加密的字串。注意字串的內容不一定是字母、數字,也可以是符號等。
輸出格式:
輸出一行,為加密後的字串。
題解:
字尾陣列模板題,直接套上即可.
code:
#include #include #include #define setio(s) freopen(s".in","r",stdin)#define maxn 1000000
using namespace std;
char str[maxn];
int n,m,rk[maxn],sa[maxn],tp[maxn],c[maxn],arr[maxn];
void qsort()
void suffix()
}int main()
return 0;
}
JSOI2007 字元加密
如果我們把字串複製乙份,拼接到後面。我們可以發現,字串的所有旋轉之後的串,都會存在於拼接之後的字串字尾當中。多出來的不會影響,很好證明 所以實際上我們對拼接後的字串字尾排序,只要排名為i的sa i 小於等於最開始字串長度len,那麼這個排名就是合法的,所以我們從小到大列舉即可。ac pragma g...
JSOI2007 字元加密
抽了點時間複習了一下字尾陣列 這道題其實不難 將字串拉環成鏈,然後再求字尾陣列即可 這樣字尾排序出來,與原題所要求的順序相符 可以自行推理 include include include include using namespace std const int maxn 2e5 char str ...
JSOI2007 字元加密
喜歡鑽研問題的js 同學,最近又迷上了對加密方法的思考。一天,他突然想出了一種他認為是終極的加密辦法 把需要加密的資訊排成一圈,顯然,它們有很多種不同的讀法。例如 jsoi07 可以讀作 jsoi07 soi07j oi07js i07jso 07jsoi 7jsoi0 把它們按照字串的大小排序 0...