P1659 [国家集训队] 拉拉队排练 踢姐

news/2025/11/22 7:14:02/文章来源:https://www.cnblogs.com/WavePath/p/19255070

P1659 [国家集训队] 拉拉队排练 踢姐

简要题意

给定一个长度为 \(n\) 的字符串 \(S\) ,求将 \(S\) 的所有长度为奇数的回文子串按照长度从大到小排序后,取出前 \(k\) 个回文子串,并输出这 \(k\) 个回文子串长度的乘积对 \(19930726\) 取模的结果,若不足 \(k\) 个符合要求的回文子串则输出 -1

数据范围:

\(1\le n \le 10^6,1\le K \le 10^12\)

思路分析

我们首先想到可以使用Manacher来实现 \(\text O (n)\) 求出所有以 \(i\) 为回文中心时可以构成最长的回文串长度 \(p_i\),但如何实现答案统计呢?显然的,我们直接遍历 \(p_i\) 是错误的,因为我们最多统计到 \(n\times 2\) 个回文串,不难发现会存在回文串中包含回文串的情况(真的不难发现么?真的不难),可以知道若存在一个回文字符串 \(S[x:y]\) 且其长度为 \(p_i\ge 1\) ,则对于任意整数 \(c \in [0,\lfloor \frac{p_i}{2} \rfloor]\) ,该字符串长度为 \(p_i-c\times 2\)的子串 \(S[x+c:y-c]\) 一定为回文串,简证:

由于字符串 \(S[x:y]\) 是回文串,根据定义有:

\[\forall k\in[0,p_i-1] , S[x+k]=S[y-k] \]

考虑其子区间 \(l_c = [x+c,y-c]\) ,其长度为 \(L=p_i-2c\) ,由于 \(c\le \lfloor \frac{p_i}{2} \rfloor\) ,有 \(L \ge 0\)

对于其任意位置 \(j \in [0,L-1]\) ,考虑其在子串中对称位置:

\[(x+c)+j=x+(c+j),(y-c)-j=y-(c+j) \]

由于 \(c+j \in [c,c+L-1]=[c,p_i-c-1]\subseteq [0,p_i-1]\) ,则根据原字符串的回文性质可得:

\[S[(x+c)+j]=S[x+(c+j)]=S[y-(c+j)]=S[(y-c)-j] \]

故该字符串的所有非空子串都是回文串。

有了这个结论,现在就开朗多了,那么我们还有没有没有统计到的回文串呢,我们大可以直接假设回文串的个数为 \(\sum\limits^{2n}_{i=0}{\lceil \frac{p_i}{2} \rceil}\) ,使用反证法证明其是对的:

情况1:假设回文串个数大于 \(\sum\limits^{2n}_{i=0}{\lceil \frac{p_i}{2} \rceil}\)

根据鸽巢原理,可知必然存在一个回文子串 \(P\) ,无法被Manacher中心位置 \(i\)\(\lceil \frac{p_i}{2} \rceil\) 个回文子串覆盖,设回文子串为 \(P[l:r]\) ,其回文中心为 \(mid=\frac{l+r}{2}\)

由于 \(P\) 是回文串,在manacher中,位置 \(1\le mid \le 2n\)\(p_{mid}\) 至少为 \(r-l+1\) ,故 \(P\) 一定包含在回文中心为 \(mid\) 且长度为 \(p_c\) 的回文串中,根据上文我们证明的结论,以 \(mid\) 为中心,半径在 \([1,p_c]\) 的回文串一定都包含在 \(\lceil \frac{p_v}{2} \rceil\) 计数中,因为算法中我们一定完全遍历过 \(1\sim 2n\) ,且 \(mid \in [1,2n]\),故对于所有可能的回文中心,要么是不合法的越界点,要么是已经被遍历过的点,故不存在该情况。

情况2:假设回文串个数小于 \(\sum\limits^{2n}_{i=0}{\lceil \frac{p_i}{2} \rceil}\)

根据抽屉原理,必然存在至少一个位置 \(i\) ,其 \(\lceil \frac{p_i}{2} \rceil\) 个回文子串中有至少一个不是原字符串回文子串。

但我们知道,对于Manacher算法,必然会更新出每一位可以构成的最长回文串长度,根据上文得到的结论,每一个回文串都一定包含 \(\lceil \frac{p_i}{2} \rceil\) 个回文子串,故不存在某一个位置上存在一个虚假的回文子串。

那么这一题就结束了,我们已知整个字符串存在一共 \(\sum\limits^{2n}_{i=0}{\lceil \frac{p_i}{2} \rceil}\) 个回文子串,我们只需要统计长度不同的回文子串分别有多少个即可,根据上文的结论,我们得出一个回文串 \(S[x:y]\) ,其长度为原来减去 \(2i\) 的子串 \(S[x+i:y-i]\) 为回文串,那么一个长度为 \(p_i\) 的回文串会产生 \(\lceil \frac{p_i}{2} \rceil\) 个长度为原来减去 \(2c\) 的回文子串 \(S[x+c:y-c]\) ,那么我们只需要开一个差分数组完成离线区间操作再前缀和统计答案即可。

代码实现

我们只在意长度为奇数的回文串,由于回文串产出的子回文串长度与原回文串长度奇偶性相同,故直接统计即可,对于前缀和只需要跳过偶数位统计,或跳过偶数位进行前缀和都可以,介于这题数据范围比较大,故使用一下快速幂进行优化,还是怕黑成碳。

🐎:

signed main(){#ifdef Zyhxfreopen("hack.in","r",stdin);#endifios::sync_with_stdio(0),cin.tie(0);int i,j,k,l,r,x,y,z;cin>>m>>k>>g;s[0]='#',s[n=1]='|';for(i=0;i<m;++i) s[++n]=g[i],s[++n]='|';s[++n]='$'; mx=-1;// 预处理扩展串for(i=2;i<n;++i){if(i<=rt) p[i]=min(p[(md<<1)-i],rt-i+1);else p[i]=1;for(;i+p[i]<=n&&i-p[i]>=0&&s[i+p[i]]==s[i-p[i]];++p[i]);if(i+p[i]>rt) rt=i+p[i]-1,md=i;//传统Manacher流程if((p[i]-1)&1)++b[p[i]-1],mx=max(mx,p[i]-1),tot+=p[i]/2+1;//进行差分(思想)}if(tot<k) cout<<-1<<endl,exit(0);// 判断不够的情况for(i=mx;i>=1;i-=2)b[i]+=b[i+2];// 前缀和for(i=mx;i>=1;i-=2){if(k-b[i]<0){ans=(ans*(1ll*qp(i,k)%M3)%M3)%M3,ans%=M3; break;}else{k-=b[i];ans=(ans*(1ll*qp(i,b[i])%M3)%M3)%M3,ans%=M3;}}cout<<ans<<endl;return 0;
}

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

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

相关文章

世界就是个舞台

演戏的人饱尝生命的跳动而失去流连玩味的机会,看戏的人因为玩味生命的形象而失去“声临其境”的热闹。—2022-19网页主要用于学习交流作者:博客园 - 域出处:https://www.cnblogs.com/SeanRIchard本文版权归作者和博…

手写代码 可以锻炼编程能力吗

DeepSeek答复 当然可以!手写代码是锻炼编程能力的极佳方法,尤其是在初学者和中级阶段。 虽然我们日常开发都在IDE里进行,但刻意练习手写代码能带来很多意想不到的好处。 手写代码的核心好处 1. 加深语言理解迫使你真…

区域CSIRT/LEA跨机构合作演习:网络安全实战演练与技术应用

土耳其国家网络事件响应中心在毛里求斯共和国组织了区域性跨机构合作演习,15个国家参与演练了加密货币追踪、开源情报技术应用、恶意软件分析和数字取证等关键网络安全技术,提升了区域合作与应急响应能力。区域CSIRT…

2025年小型冻干机干燥机厂家选购指南:小型冻干机厂家推荐

2025小型冻干机干燥机厂家选购指南:小型冻干机厂家推荐!在冻干技术不断发展的当下,小型冻干机干燥机凭借其灵活、高效的特性,在实验室、小型企业等场景中发挥着重要作用。对于有相关需求的用户而言,选择合适的厂家至…

Chrome-Gemini-Nano

Chrome-Gemini-Nano导航 (返回顶部)1. Chrome-Weights.bin1.1 停用删除 1.2 转移目录2. 尝试失败记录20252.1 在 Chrome 中启用 AI 2.2 Next.js Chrome AI 聊天机器人 2.3 Chrome插件3. 相关帮助3.1 内置 AI 帮助 3.2 …

谷歌浏览器自带翻译的诡异Bug:ID翻译后竟然变化了

当前负责的项目主打海外业务,总免不了和多语言打交道。但最近我在Vite+Vue3+Element Plus技术栈的项目里,遇到了一个堪称“玄学”的bug——Chrome浏览器自带翻译功能,居然能把表格里的数字ID直接改了!从印度同事到…

i need rest.

i should only care myself.

代码随想录算法训练营第一天:数组part02

代码随想录算法训练营第一天:数组part02** 209.长度最小的子数组** leetcode链接:https://leetcode.cn/problems/minimum-size-subarray-sum/ 题目描述:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该…

对于生成式AI的思考:摘要

最容易滥用人工智能的人,往往是那些背景知识浅薄、辨别力弱或缺乏动力的人,他们恰恰最容易被人工智能的幻象所迷惑。 人工智能是知识的放大器,而非知识的替代品。 对于那些求知欲强、积极进取的人来说,人工智能是一…

元推理框架,是真正的AI“世界模型”

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891命题解析:元推理框架 ≡ 真AI世界模型世界模型的本质要求完备性:能容纳任意可能世界的逻辑结构 自指性:模型自身必须被包含在建模范围内 因果闭合:所有推…

LLM推理加速相关技术及框架

LLM推理加速相关技术及框架Posted on 2025-11-22 01:32 wsg_blog 阅读(0) 评论(0) 收藏 举报PagedAttention KVCache vllm TensorRT-LLM

TOPDIAG P150 Electrical Tester: 6-30V for Professional Vehicle Electrical Diagnostics

The Struggle with Vehicle Electrical Diagnostics: A Universal Challenge for Mechanics and Car Owners Vehicle electrical systems are the backbone of modern driving—but diagnosing issues like dead batte…

LilCTF2025部分wp

crypto [WARM UP] 对称!Just Decrypt idea 如果放在 LilCTF Crypto,本题难度可定级为 **签到** 短短的也很可爱。"""Just Decrypt - A simple LilCTF warmup challenge.""" from ran…

做题记录 #6

NOIP Day8A. 探测 (3) 2025.11.20 很有趣的题。我在考场上发现,因为为了满足全部限制条件,类似于这些限制条件的点一起走,汇聚到同一点,降低到同一个距离。由于保证答案存在,因此直接两两找汇聚点也是可以的,最后…

第三次作业:详细设计与接口实现报告

团队名称:洛珈山下 日期:2025-11-22本次作业目标 | 维度 | 目标 | | ---- | ---------------------------------------------------------- | | 对齐进度…

102302112王光诚作业3

作业①: 要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。 –务必控制总页数(学号尾数2位)、总下载的图片数量(尾数后3位)等…

【VSCode】为不同语言设置工作区减少内存占用的方法

本方法应该适用于VSCode以及基于VSCode开发的一系列编辑器(Cursor,Antigravity...) motivation是在我16GB内存的电脑上开了几个ide,挂了几个后台应用程序,就发现内存打满了,和同学交流后发现一个解法,通过设置不同…

Xhorse XDKP24 MB Power Adapter for VVDI Key Tool Plus Pad – Simplify MB Key Programming

Why You Need the Xhorse XDKP24 Mercedes-Benz MB Power Adapter In the world of automotive repair, time is critical. Whether you’re a European auto shop technician tackling a complex Mercedes-Benz diagn…

从“阅读”到“调用”:文档抽取技术如何重塑版式软件

在数字化办公时代,PDF、扫描图像等版式固定文档承载着海量的关键信息。然而,这些文档的“只读”特性使其内部的数据如同被锁在坚固的盒子中,难以被直接编辑、分析和利用。文档抽取技术的出现,正是打开这些“数据盒…

2025-11-22 Ed25519 Error: error:1E08010C:DECODER routines::unsupported

Ed25519 Error: error:1E08010C:DECODER routines::unsupported