這是一道模板題。
讀入乙個長度為 n n n 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1 1 1 到 n n n。
輸入格式:
一行乙個長度為 n n n 的僅包含大小寫英文本母或數字的字串。
輸出格式:
一行,共n個整數,表示答案。
輸入樣例#1:複製
ababa
輸出樣例#1:複製
5 3 1 4 2
n<=106n <= 10^6n<=106
題解
倍增演算法的字尾陣列
表示並不會dc3
**
//by 減維
#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define db double
#define inf 1<<30
#define maxn 1000005
#define eps 1e-8
using
namespace
std;
intn,m,a[maxn],c[maxn],sa[maxn],tp[maxn],rnk[maxn],hei[maxn];
char
s[maxn];
void
srt()
bool cmp(int *f,int x,int y,int w)
void
getsa()
int k=0
,j;
for(int i=1;i<=n;hei[rnk[i++]]=k)
for(k=k?k-1:k,j=sa[rnk[i]-1];a[j+k]==a[i+k];k++);
}int
main()
洛谷P3809(字尾陣列模板題)
p3809 思路 使用字尾陣列以o nlogn 的複雜度將所有字尾陣列的字典序大小求出即可。字尾陣列 include include include includeusing namespace std const int maxn 4e6 10 ss陣列表示將要輸入的字串陣列 char ss ma...
洛谷 P3809 模板 字尾排序 字尾陣列
題目描述 讀入乙個長度為 n n 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 1 1 到 n n 輸入輸出格式 輸入格式 一行乙個長度為 n n 的僅包含大小寫英文本母或數字的字串。輸出格式 一行,共n...
洛谷P3809 字尾排序 字尾陣列 模板
這是一道模板題。讀入乙個長度為 nn 的由大小寫英文本母或數字組成的字串,請把這個字串的所有非空字尾按字典序從小到大排序,然後按順序輸出字尾的第乙個字元在原串中的位置。位置編號為 11 到 nn。輸入格式 一行乙個長度為 nn 的僅包含大小寫英文本母或數字的字串。輸出格式 一行,共n個整數,表示答案...