尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:洛谷 P8368([LNOI2022] 串)

题解:洛谷 P8368([LNOI2022] 串)
📅 发布时间:2026/6/18 16:08:26

1. Description

给定一个字符串 S,要求求出一个字符串序列 \(\{T_i\}\),满足 \(T_0\) 是 S 的子串,且对于 \(i\ne 0\),\(|T_i|=|T_{i-1}|+1\),且 \(S\) 存在一个子串 \(S^\prime\) 满足 \(S^\prime\) 长度为 \(|T_{i-1}|\) 的前缀为 \(T_{i-1}\),长度为 \(|T_i|\) 的后缀为 \(T_{i-1}\),求合法序列的最长长度。

2. Solution

感觉是一道不算很难的黑,难度有虚高嫌疑(?)。
一个结论是最优的序列一定是以空串开头的,这结论很显然,不过多赘述。
首先我们对限制条件进行一定的分析,方便我们写题。对于 \(T_i\) 和 \(T_{i-1}\),因为 \(S^\prime\) 的长度为 \(|T_i|+1\),所以长度为 \(|T_{i-1}|\) 的前缀和长度为 \(|T_i|\) 的后缀将共用 \([2,|T_{i-1}|]\) 的部分。
由此,我们可以想到倒着构造,对于 \(T_i=S[l,r]\),\(T_{i-1}=S[l-1,r-2]\) 必然是一个合法的构造,此时 \(S^\prime=S[l-1,r]\)。
那么答案的下限就是 \(\lfloor\frac{n}{2}\rfloor\),当初始的 \(r=n,l=\lfloor\frac{n}{2}\rfloor\) 时取到。
然后我们就需要考虑怎么增加这个答案,应该不难想到考虑一个子串在 \(S\) 中重复出现的情况,此时我们可以增加答案。
如何构造?我们假设 \(S[l_1,r_1]=S[l_2,r_2]\ (l_1<l_2)\),如果 \(r_1\) 和 \(n\) 奇偶性相同,那么从 \([l_1+\frac{n-r_1}{2},n]\) 开始,一直平移,显然可以到达 \([l_1,r_1]\),此时将这个区间视作 \([l_2,r_2]\),继续进行平移,如此重复,每一次左端点平移到 \(l_1\),就跳回到 \(l_2\),直到区间长度为 \(0\) 为止,如果 \(r_i\) 和 \(n\) 奇偶性不同,那么从 \([l_1+\frac{n-r_1-1}{2},n-1]\) 开始即可。
这样答案就是 \(\frac{n-r_1}{2}+r_1-l_1+1\),略微变换则有 \(\frac{n+r_1-l_1-l1+2}{2}\),也就是 \(\frac{n+len-l_1}{2}\)。
考虑使用后缀数组求解,这个式子的最值必然由两个排名上相邻的后缀取得,理由是,如果 \(S[l_1,n],S[l_2,n]\) 在排名上不相邻,那么必然存在一个与 \(S[l_1,n]\) 在排名上相邻的后缀 \(S[x,n]\),使得 \(\operatorname{LCP}(S[l_1,n],S[l_2,n])\le \operatorname{LCP}(S[l_1,n],S[x,n]),\min(x,l_1)\le l_1\),得到的值显然更大。
那么代码的实现也就很简单了。

3. Code

/*by ChenMuJiu*/
/*略去缺省源与快读快写*/
const int N=5e5+5;
int n,ans;
int sa[N],rk[N],tmpsa[N],tmprk[N],cnt[N],f[N];
char s[N]; 
void init(int n){for(int i=1;i<=128;i++)cnt[i]=0;for(int i=1;i<=n;i++)cnt[s[i]]++;for(int i=1;i<=128;i++)cnt[i]+=cnt[i-1];for(int i=1;i<=n;i++)sa[cnt[s[i]]--]=i;for(int i=1,p=0;i<=n;i++){if(s[sa[i]]!=s[sa[i-1]])p++;rk[sa[i]]=p;}for(int k=1,now;k<n;k<<=1){now=0;for(int i=n-k+1;i<=n;i++)tmpsa[++now]=i;for(int i=1;i<=n;i++)cnt[i]=0;for(int i=1;i<=n;i++){cnt[rk[i]]++;if(sa[i]>k)tmpsa[++now]=sa[i]-k;}for(int i=1;i<=n;i++)cnt[i]+=cnt[i-1];for(int i=n;i>=1;i--)sa[cnt[rk[tmpsa[i]]]--]=tmpsa[i];for(int i=1;i<=n;i++)tmprk[i]=rk[i];for(int i=1,p=0;i<=n;i++){if(tmprk[sa[i]]==tmprk[sa[i-1]]&&tmprk[sa[i]+k]==tmprk[sa[i-1]+k])rk[sa[i]]=p;else rk[sa[i]]=++p;}}s[n+1]='#';for(int i=1,k=0,pos;i<=n;i++){if(rk[i]==1)continue;if(k)k--;pos=sa[rk[i]-1];while(s[i+k]==s[pos+k])k++;f[rk[i]]=k;}
}
signed main(){int t;read(t);while(t--){scanf("%s",s+1);n=strlen(s+1);init(n);ans=n/2;for(int i=2,len,l;i<=n;i++){len=f[i],l=min(sa[i-1],sa[i]);tomax(ans,(n+len-l+1)/2);}write(ans),Nxt;}
}

相关新闻

  • 法院庭审前用Sonic模拟证人陈述过程进行预演
  • 2005:我在硅谷种AI-第2集:垃圾邮件的朴素审判
  • 哲学思辨录音:学者用VoxCPM-1.5-TTS-WEB-UI探讨意识本质问题

最新新闻

  • 铜陵市中职中专综合实力排名榜top10学校2026年度盘点 择校参考 - 小途xt
  • 一张照片生成会说话的动画:AI亲子视频实战工作流
  • 2026保姆级指南:免费AI抠图软件推荐,电脑手机网页端无水印工具手把手教学
  • 地铁商用咖啡机怎么选?适配场站场景的全自动设备推荐 - 品牌2026
  • 北京黄金回收实用全指南:5家正规门店深度评测,附地址与避坑攻略 - 互联网科技品牌测评
  • 2026年辽宁资产评估专业报考指南:择校思路与院校简析 - 品牌2026

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号