BZOJ1031(字尾陣列)

2021-08-14 02:33:32 字數 642 閱讀 8353

題意:給出乙個字串,求出所有全排列後,按字典序從小到大排序,每個串的最後一位組成的字串

題解:字尾陣列搞一搞,將他複製一遍,跑乙個sa,那麼對於長度n以後的字串在sa中可以不管,算是個模板題吧

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace

std;

const

int maxn = 1e5 + 5;

typedef

long

long ll;

char s[maxn*2];

int sa[maxn*2];

int t[maxn*2];

int t2[maxn*2];

int c[maxn*2];

void build_sa(int n, int m)

}int main()

printf("\n");

}

bzoj 1031 字元加密Cipher

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

BZOJ1031 字元加密Cipher

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

bzoj 1692 字尾陣列

將乙個字串進行如下操作 每次拿去首或尾,放在新字串尾,問新字串字典序最小的情況。直覺貪心,但情況複雜。可以用字尾陣列,每次比較當前剩餘串正序和倒序哪種字典序小,可以如下構建 abcd abcd0dcba include include include include include include ...