博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3879: SvT
阅读量:5101 次
发布时间:2019-06-13

本文共 2001 字,大约阅读时间需要 6 分钟。

今天早上本来就想填掉这个坑的。。。

然后还是血淋淋的一片。

心态崩了就去做跳蚤

调着调着跳蚤才发现我st表模版写挂了。。。

满怀希望的去把这题改了。

然后还是血淋淋的一片。

 

今天晚上一怒之下把以前的代码翻出来改st表

wc,A了?A了!。。

--------------------cnm---------------------

这题常规操作st表求LCP

然后单调栈维护区间

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;int n,a[510000],tt[510000];int sa1[510000],sa2[510000],Rank[510000],Rsort[510000];void get_sa(int m){ for(int i=1;i<=n;i++)Rank[i]=a[i]; memset(Rsort,0,sizeof(Rsort)); for(int i=1;i<=n;i++)Rsort[Rank[i]]++; for(int i=1;i<=m;i++)Rsort[i]+=Rsort[i-1]; for(int i=n;i>=1;i--)sa1[Rsort[Rank[i]]--]=i; int ln=1,p=0; while(p
0)sa2[++k]=sa1[i]-ln; memset(Rsort,0,sizeof(Rsort)); for(int i=1;i<=n;i++)Rsort[Rank[sa2[i]]]++; for(int i=1;i<=m;i++)Rsort[i]+=Rsort[i-1]; for(int i=n;i>=1;i--)sa1[Rsort[Rank[sa2[i]]]--]=sa2[i]; for(int i=1;i<=n;i++)tt[i]=Rank[i]; p=1;Rank[sa1[1]]=1; for(int i=2;i<=n;i++) { if(tt[sa1[i-1]]!=tt[sa1[i]]||tt[sa1[i-1]+ln]!=tt[sa1[i]+ln])p++; Rank[sa1[i]]=p; } ln*=2;m=p; }}LL height[510000];void get_he(){ int j;LL h=0; for(int i=1;i<=n;i++) { j=sa1[Rank[i]-1]; if(h!=0)h--; while(a[i+h]==a[j+h])h++; height[Rank[i]]=h; }}//-------------------sa--------------------int Bin[30],Log[510000];int f[30][510000],s[510000];int LCP(int x,int y){ int k=Log[y-x+1]; return min(f[k][x],f[k][y-Bin[k]+1]);}void get_st(){ Bin[0]=1;for(int i=1;i<=30;i++)Bin[i]=Bin[i-1]*2; Log[1]=0;for(int i=2;i<=n ;i++)Log[i]=Log[i/2]+1; for(int i=1;i<=n;i++)f[0][i]=height[i]; for(int j=1;Bin[j]<=n;j++) for(int i=1;i+Bin[j]-1<=n;i++) f[j][i]=min(f[j-1][i],f[j-1][i+Bin[j-1]]);}//----------------st-------------------------int q[510000];bool cmp(int n1,int n2){ return Rank[n1]
s[i])top--; L[i]=sta[top],sta[++top]=i; } top=1,sta[1]=T; for(int i=T-1;i>=1;i--) { while(top!=0&&s[sta[top]]>=s[i])top--; R[i]=sta[top],sta[++top]=i; } LL ans=0; for(int i=1;i

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/8696456.html

你可能感兴趣的文章
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
支持向量机——内核
查看>>
MFC注册热键
查看>>
万能的SQLHelper帮助类
查看>>
uboot分析:uboot的启动过程分析
查看>>
tmux的简单快捷键
查看>>
springboot笔记04——读取配置文件+使用slf4j日志
查看>>
[Swift]LeetCode653. 两数之和 IV - 输入 BST | Two Sum IV - Input is a BST
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
微信小程序的wxml文件和wxss文件在webstrom的支持
查看>>
Html5 离线页面缓存
查看>>
[php]在PHP中读取和写入WORD文档的代码
查看>>
WCF傻瓜模式写程序
查看>>
《绿色·精简·性感·迷你版》易语言,小到不可想象
查看>>
Java Web学习总结(13)Listener监听器
查看>>
开始Flask项目
查看>>
Ruby:多线程队列(Queue)下载博客文章到本地
查看>>
Android打包key密码丢失找回
查看>>
03 jQuery动画
查看>>
医药箱APP静态小项目
查看>>