Bzoj3998 弦论
来源:互联网 发布:金星舞蹈水平 知乎 编辑:程序博客网 时间:2024/06/10 13:35
物理题目传送门
求第k大的子串?SAM模板题啊
CLJ的论文都讲了怎么做啊,把自动机看成一个后缀Trie求出size让后像多叉平衡树那样乱搞就好了~
比前两个哈希的题好多了~ (顺便,hdu高亮好好看啊)
#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include<stdio.h>#include<string.h>#include<algorithm>#define N 1000010using namespace std;char c[N];int s[N][26],mx[N],sz[N],f[N];int n,m,T,k,cnt=1,lst=1,v[N],r[N],w[N];inline int extend(int c){ int p=lst,np=lst=++cnt,q,nq; mx[np]=mx[p]+1; sz[np]=1; for(;p&&!s[p][c];p=f[p]) s[p][c]=np; if(!p) return f[np]=1; q=s[p][c]; if(mx[q]==mx[p]+1) f[np]=q; else{ nq=++cnt; mx[nq]=mx[p]+1; f[nq]=f[q]; f[q]=f[np]=nq; memcpy(s[nq],s[q],26<<2); for(;p&&s[p][c]==q;p=f[p]) s[p][c]=nq; }}inline void dfs(int x){ if(k<=sz[x]) return; else k-=sz[x]; for(int j=0;j<26;++j) if(k>w[s[x][j]])k-=w[s[x][j]]; else { putchar(j+'a'); dfs(s[x][j]); break; }}int main(){ scanf("%s%d%d",c+1,&T,&k); n=strlen(c+1); for(int i=1;i<=n;++i) extend(c[i]-'a'); for(int i=1;i<=cnt;++i) ++v[mx[i]]; for(int i=1;i<=n;++i) v[i]+=v[i-1]; for(int i=cnt;i;--i) r[v[mx[i]]--]=i; if(T) for(int i=cnt;i;--i) sz[f[r[i]]]+=sz[r[i]]; else for(int i=cnt;i;--i) sz[i]=1; sz[1]=*sz=0; memcpy(w,sz,sizeof w); for(int i=cnt;i;--i) for(int j=0;j<26;++j) w[r[i]]+=w[s[r[i]][j]]; if(k>w[1]) puts("-1"); else dfs(1);}
阅读全文
0 0
- bzoj3998 弦论
- [BZOJ3998]弦论
- Bzoj3998 弦论
- 【TJOI2015】【BZOJ3998】弦论
- [BZOJ3998][TJOI2015]弦论
- BZOJ3998: [TJOI2015]弦论
- bzoj3998 TJOI2015 弦论
- 【bzoj3998】[TJOI2015]弦论
- 【bzoj3998】[TJOI2015]弦论
- [BZOJ3998][TJOI2015]弦论
- bzoj3998【TJOI2015】弦论
- BZOJ3998: [TJOI2015]弦论
- bzoj3998: [TJOI2015]弦论
- 【TJOI2015】【BZOJ3998】弦论
- bzoj3998 [TJOI2015]弦论
- 【TJOI2015】bzoj3998 弦论
- bzoj3998 弦论 后缀自动机
- bzoj3998
- python入门(2)
- C++关键字之explicit
- 真实实践中的MeritMS与Project Wise的校审流程对比
- 超详细的系统时钟和定时器原理解析
- 【拜小白opencv】43-形态学滤波——综合示例【腐蚀、膨胀、开运算、闭运算、顶帽、黑帽 形态学梯度、内部梯度、外部梯度、X方向梯度、Y方向梯度】
- Bzoj3998 弦论
- JVM--详解类加载机制
- Android混淆机制
- 返回栈上的对象、对象的引用及各构造器发生的时机
- 自顶向下,逐步求精----计算机哲学
- week13-leetcode #300-Longest-Increasing-Subsequence
- java中将Oracle数据局中blob型数据转换为byte型的两种方法
- vi命令
- retrofit+ok+rxjava+fresco的demo