网站在手机上内页图不显示,大型网站建设建设公司,外包公司到底值不值得去,宝安区网络公司物理题目传送门 求第k大的子串#xff1f;SAM模板题啊 CLJ的论文都讲了怎么做啊#xff0c;把自动机看成一个后缀Trie求出size让后像多叉平衡树那样乱搞就好了~ 比前两个哈希的题好多了~ #xff08;顺便#xff0c;hdu高亮好好看啊#xff09; #pragma GCC opitmize(SAM模板题啊 CLJ的论文都讲了怎么做啊把自动机看成一个后缀Trie求出size让后像多叉平衡树那样乱搞就好了~ 比前两个哈希的题好多了~ 顺便hdu高亮好好看啊 #pragma GCC opitmize(O3)
#pragma G opitmize(O3)
#includestdio.h
#includestring.h
#includealgorithm
#define N 1000010
using namespace std;
char c[N];
int s[N][26],mx[N],sz[N],f[N];
int n,m,T,k,cnt1,lst1,v[N],r[N],w[N];
inline int extend(int c){int plst,nplstcnt,q,nq;mx[np]mx[p]1; sz[np]1;for(;p!s[p][c];pf[p]) s[p][c]np;if(!p) return f[np]1;qs[p][c];if(mx[q]mx[p]1) f[np]q;else{nqcnt;mx[nq]mx[p]1;f[nq]f[q]; f[q]f[np]nq;memcpy(s[nq],s[q],262);for(;ps[p][c]q;pf[p]) s[p][c]nq;}
}
inline void dfs(int x){if(ksz[x]) return; else k-sz[x];for(int j0;j26;j)if(kw[s[x][j]])k-w[s[x][j]];else { putchar(ja); dfs(s[x][j]); break; }
}
int main(){scanf(%s%d%d,c1,T,k); nstrlen(c1);for(int i1;in;i) extend(c[i]-a);for(int i1;icnt;i) v[mx[i]];for(int i1;in;i) v[i]v[i-1];for(int icnt;i;--i) r[v[mx[i]]--]i;if(T) for(int icnt;i;--i) sz[f[r[i]]]sz[r[i]];else for(int icnt;i;--i) sz[i]1; sz[1]*sz0; memcpy(w,sz,sizeof w);for(int icnt;i;--i) for(int j0;j26;j) w[r[i]]w[s[r[i]][j]];if(kw[1]) puts(-1); else dfs(1);
} 转载于:https://www.cnblogs.com/Extended-Ash/p/9477181.html