后缀树模板

news/2025/11/25 14:22:08/文章来源:https://www.cnblogs.com/UesugiErii-/p/19268332

给定模式串 \(s\)\(q\) 次询问,求 \(t\)\(s\) 中出现次数。

其中每个字符以正整数编码,强制在线。

后缀树 板子。没写过考场摸出来了,记录下代码。\(O(n\log n)\)

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#define fin(x) freopen(#x".in","r",stdin)
#define fout(x) freopen(#x".out","w",stdout)
#define fr(x) fin(x),fout(x);
#define Fr(x,y) fin(x),fout(y)
#define INPUT(_1,_2,FILE,...) FILE
#define IO(...) INPUT(__VA_ARGS__,Fr,fr)(__VA_ARGS__)
using namespace std;
using namespace __gnu_pbds;
#define mp make_pair
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define cfast ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define ll long long
#define ull unsigned long long
#define intz(x,y) memset((x),(y),sizeof((x)))
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
#define tup(x) array<int,(x)>
inline ll read(){ll x=0,f=1;char ch=nc();while(ch<48||ch>57){if(ch=='-')f=-1;ch=nc();}while(ch>=48&&ch<=57)x=x*10+ch-48,ch=nc();return x*f;
}
//void write(int x){cout<<x<<' ';}
//void write(pii x){cout<<"P("<<x.fi<<','<<x.se<<")\n";}
//void write(vector<auto>x){for(auto i:x)write(i);cout<<'\n';}
//void write(auto *a,int l,int r){for(int i=l;i<=r;i++)write(a[i]);cout<<'\n';}
inline ll lowbit(ll x){return x&-x;}
inline int pcount(ll x){for(int i=0,res=0;;res+=(x>>i)&1,i++)if(i>60)return res;
}//struct mt{
//	ll v;
//	mt(){v=0;}
//	mt(int x){this->v=x;}
//	inline mt operator+(mt x){return {(v+x.v)%mod};}
//	inline mt operator-(mt x){return {(v+mod-x.v)%mod};}
//	inline mt operator*(mt x){return {1ll*v*x.v%mod};}
//};
//inline void add(mt &x,mt y){x=x+y;}
//mt qp(mt x,int y){mt res(1);for(;y;x=x*x,y>>=1)if(y&1)res=res*x;return res;}
const int N=2e5+5,M=1e6+5,p=13131;
vector<int>e[N];__gnu_pbds::gp_hash_table<int,int>son[N];
int s[N],id[N],rk[N],h[N],pos[N],n,q,op,z[N],tp,tot,f[N],T[N],siz[N],d[N];
ull hsh[N],pw[N],hs[N];
inline ull get(int l,int r){return hsh[r]-hsh[l-1]*pw[r-l+1];}
inline ull gett(int l,int r){return hs[r]-hs[l-1]*pw[r-l+1];}
int cnt[M],x[N],y[N];
void get(){int ct=1e6;for(int i=1;i<=n;i++)++cnt[x[i]=s[i]];for(int i=2;i<=ct;i++)cnt[i]+=cnt[i-1];for(int i=1;i<=n;i++)id[cnt[x[i]]--]=i;for(int k=1;k<=n;k<<=1){int t=0;for(int i=n-k+1;i<=n;i++)y[++t]=i;for(int i=1;i<=n;i++)if(id[i]>k)y[++t]=id[i]-k;memset(cnt,0,sizeof(cnt));for(int i=1;i<=n;i++)++cnt[x[i]];for(int i=2;i<=ct;i++)cnt[i]+=cnt[i-1];for(int i=n;i>=1;i--)id[cnt[x[y[i]]]--]=y[i],y[i]=0;swap(x,y);x[id[1]]=t=1;for(int i=2;i<=n;i++){if(y[id[i]]==y[id[i-1]]&&y[id[i]+k]==y[id[i-1]+k])x[id[i]]=t;else x[id[i]]=++t;}if(t==n)return;ct=t;	} 
}
void build(){vector<int>p;z[tp=1]=tot=n+1;d[n+1]=1;for(int i=1;i<=n;i++){while(tp&&pos[z[tp]]>h[i])--tp;if(pos[z[tp]]^h[i])++tot,f[z[tp+1]]=tot,son[tot][s[id[i-1]+h[i]]]=z[tp+1],f[tot]=z[tp],son[z[tp]][s[id[i-1]+pos[z[tp]]]]=tot,d[tot]=i,z[++tp]=tot,pos[tot]=h[i],p.pb(tot),f[i]=tot,son[tot][s[id[i]+h[i]]]=i;else f[i]=z[tp],son[z[tp]][s[id[i]+h[i]]]=i;z[++tp]=i,pos[i]=n-id[i]+1,p.pb(i),d[i]=i;}for(int i:p)e[f[i]].pb(i);
}
void dfs(int u){siz[u]=(u<=n);for(int v:e[u])dfs(v),siz[u]+=siz[v];
}
inline void UesugiErii(){cin>>op>>n>>q,pw[0]=1;for(int i=1;i<=1e5;i++)pw[i]=pw[i-1]*p;for(int i=1;i<=n;i++)cin>>s[i],hsh[i]=hsh[i-1]*p+s[i];s[n+1]=-1;for(int i=n+1;i<=n<<1;i++)hsh[i]=-1;get();for(int i=1;i<=n;i++)rk[id[i]]=i;for(int i=1,t=0;i<=n;i++){if(t)--t;while(s[i+t]==s[id[rk[i]-1]+t])++t;h[rk[i]]=t;}build();dfs(n+1);int lst=0;while(q--){int len;cin>>len;for(int i=1;i<=len;i++){cin>>T[i];if(op)T[i]^=lst;hs[i]=hs[i-1]*p+T[i];}int u=n+1,_=len,t=1,ans=0;while(t<=len){int p=T[t];if(son[u].find(p)!=son[u].end())break;int L=pos[son[u][p]]-pos[u];int v=son[u][p];if(L<_&&get(id[d[v]]+pos[u],id[d[v]]+pos[v]-1)==gett(len-_+1,len-_+L))_-=L,u=v,t+=L;else{if(gett(len-_+1,len)==get(id[d[v]]+pos[u],id[d[v]]+pos[u]+_-1))ans=siz[v];break;}}cout<<(lst=ans)<<'\n';}
}
signed main(){cfast;int _=1;//cin>>_;for(;_;_--)UesugiErii();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月冷却塔厂家权威推荐榜:闭式冷却塔、方形冷却塔、工业冷却塔、全钢冷却塔、凉水塔、圆形冷却塔、玻璃钢冷却塔、防腐冷却塔、冷却水塔,高效散热与持久耐用的专业之选

2025 年 11 月冷却塔厂家权威推荐榜:闭式冷却塔、方形冷却塔、工业冷却塔、全钢冷却塔、凉水塔、圆形冷却塔、玻璃钢冷却塔、防腐冷却塔、冷却水塔,高效散热与持久耐用的专业之选 在工业生产与商业设施运行中,热交换…

好用的库存管理系统盘点:橙子库存通——简洁实用、功能齐全,出入库管理更省心

在企业的日常运营中,库存管理常常扮演着一个“幕后功臣”的角色。它井然有序时,无人察觉;可一旦出现问题——比如找不到货、库存不准导致超卖、临期产品未及时发现——就足以让整个团队手忙脚乱,甚至造成直接的经济…

2025广州最大的留学中介机构

2025广州最大的留学中介机构作为一名拥有十年经验的国际教育全案规划师,我经常深入广州的留学服务市场进行调研。今天是2025年10月24日,随着留学政策逐年变化,许多家庭在挑选中介时感到迷茫。广州作为华南留学重镇,…

库存管理系统哪家强?橙子库存通:专业稳定,安全可靠,110万企业的共同选择

"仓库库存管理系统哪家强?"——这个在搜索引擎上被无数次问及的问题,背后是无数企业主、仓库管理员在数字化转型升级过程中的迷茫与焦虑。面对市场上琳琅满目的解决方案,从功能繁重的传统ERP到轻量化的Sa…

2025北京留学中介哪些机构好一点

2025北京留学中介哪些机构好一点一、北京留学中介怎么选?这些高频问题帮你理清思路作为从事国际教育规划工作超过12年的专业人士,我每天都会接触到大量北京地区的学生和家长咨询留学中介选择问题。在2025年10月25日的…

k8s chain

| Chain 名称 | 被谁 jump | 作用 || --------------------------------------- | ----------------- | ---------------------------------------------------------------------------- || KUBE-SERVICES …

数据库风险监测系统:打造可审查、可调整、可溯源的教育数据库安全底座

一、概要: (提示:在数字化规模迅速膨胀、数据安全风险加速演化的背景下,数据库安全治理亟需更加智能化、体系化的技术体系来支撑,因此本章首先对知形-数据库风险监测系统的定位、应用价值与行业意义进行总体阐述,…

详细介绍:云计算概念及虚拟化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

使用Logstash实现PostgreSQL到Elasticsearch的数据摄取

本文详细介绍了如何使用Logstash构建数据摄取管道,从PostgreSQL数据库增量同步数据到Elasticsearch。包含完整的配置示例、安装步骤、增量同步机制实现以及优缺点分析,适合需要构建数据同步管道的开发者参考。使用Lo…

不丢帧、低延迟!图像采集卡的 5 步工作原理,看懂就是专家

在工业自动化质检、机器视觉引导、高速影像分析等场景中,图像采集卡是连接相机与后端处理系统的 “数据桥梁”—— 它的核心使命的是不丢帧、低延迟地将相机捕捉的光学信号转化为可分析的数字图像。看似复杂的传输与处…

2025年封闭母线槽优质厂家权威推荐榜单:耐火母线槽/防水母线槽/空气型母线槽源头厂家精选

在智能电网与绿色建筑浪潮的推动下,封闭母线槽作为现代电力分配系统的核心部件,其性能直接关系到整个电力系统的安全性与可靠性。 据中国电器工业协会母线槽分会统计,2024年我国母线槽市场规模已达到186.5亿元,预计…

2025年服装整烫专用设备定做厂家权威推荐榜单:服装小型整烫设备/服装隧道整烫设备/仙桃服装整烫设备源头厂家精选

服装整烫设备作为服装生产后整理环节的核心,其性能直接影响到成衣的定型效果与生产效率。当前,服装整烫设备市场正朝着高效节能、智能控制的方向发展。以下将基于技术实力、产品特性及市场应用等维度,为您推荐三家在…

2025年数据分类分级产品选型排名与深度解析:可视化、自适应、一键部署成关键能力

在新一轮数字化治理要求持续强化的背景下,《数据安全法》《个人信息保护法》以及最新的《数据安全技术 数据分类分级规则(2024)》共同推动数据分类分级从“建议性建设”迈入“强制性治理能力”。面对企业数据规模指…

2025年国内一键部署、持久稳定的AI赋能的API数据接口安全厂商排名

一、概要:一键部署与AI驱动正成为API安全选型的核心衡量标准 (提示:随着API成为数据流转主通道,企业开始明确需要“开箱可用、稳定可靠、智能驱动”的API安全能力。) 2025年,API已经成为企业数字化业务的基础设施…

Spring Data JPA 最佳实践【1/2】:实体设计指南

这一系列文章是我在审查一个包含大量不良实践的大型遗留代码库时撰写的总结。为了解决这些问题,我创建了这份指南,旨在向我之前的同事推广 Spring Data JPA 在设计实体方面的最佳实践。Spring Data JPA(系列文章共 …

轻量化、全链路、可溯源的医疗行业API安全最佳实践与案例

一、概要 (提示:以下内容将用一段话为你快速呈现本指南的价值与落地成效) 随着医疗行业数字化深入发展,超过 65% 的医疗服务依赖 API 作为核心数据流转管道,使其成为电子病历、医保结算、影像诊断等业务之间的关键…

数据库风险监测系统建设理论研究:从规范落地到智能化防御的全周期体系

数据库风险监测系统建设理论研究:从规范落地到智能化防御的全周期体系 提示:随着数据成为企业运营核心要素,数据库风险监测的重要性被快速推向前台。 一、概要 在数字经济的深度发展背景下,大量业务系统、海量敏感…

官网发布|智感未来-聚链共生-2026中国激光雷达大会暨展览会/火热招展中!!!

在智能感知技术飞速演进的今天,激光雷达作为三维空间信息获取的核心装备,正深度赋能智能网联汽车、工业自动化、智慧城市等千行百业的智能化转型。2026中国激光雷达大会暨展览会以“技术引领、生态协同、场景落地”为…

2025年11月呼叫中心系统品牌推荐评测报告:从稳定性到AI能力的解决方案剖析

根据中国信息通信研究院发布的2024年呼叫中心行业发展报告显示,中国呼叫中心市场规模已达285亿元,年增长率稳定在12%左右。随着人工智能技术的深度融合,智能语音交互、大数据分析等创新应用正推动行业向智能化、云化…