当前位置: 首页 > news >正文

CCPC哈尔滨站-J. 幻想乡的裁判长

statement

给一个长为 \(n\) 的字符串 \(s\),字符集为 \(\{\text{o, v, w}\}\),请输出最长的回文子串,这个子串中一个 \(\text{w}\) 可以看成两个 \(\text{v}\)

给个例子:\(\text{wwovvvv}\) 是合法的。

数据范围:多测,\(\sum n\le 10 ^ 7\)

solution

把字符串看成很多段,连续的 \(o\) 看成一段,连续的 \(v\)\(w\) 也可以看成一段。

这个时候,计算每一段的长度,计算时把 \(w\) 的长度看作 \(2\),其他字符的长度看为 \(1\),按照从左往右的顺序将长度存在一个数组 \(a\) 中。

然后对 \(a\) 进行一个 Manacher,得到数组 \(P\)

这样通过 \(P\) 就可以得到所有形如:

\[o\cdots o|w\cdots v|o\cdots o \\ w\cdots v|o\cdots o|w\cdots v \]

的回文串。

这个时候,对于每一个这样的回文串,再暴力往两边扩展即可。

时间复杂度 \(\mathcal O(\sum n)\).

http://www.jsqmd.com/news/35851/

相关文章:

  • C语言中的整型提升
  • 完整教程:Hive 知识点梳理
  • OZI-Project代码注入漏洞分析与修复方案
  • 创建第一个pygame游戏窗口
  • 常量的二元图景:C 语言的刚性契约与 Python 的柔性表达
  • Swift 进行验证码识别:集成 Tesseract OCR
  • 700.二叉搜索树中的搜索(二叉树算法) - 实践
  • egg-passport 的原理, 是否依赖数据库
  • P10194 [USACO24FEB] Milk Exchange G 做题记录
  • egg-sequelize 原理, 访问 sequelize 的方式, 支持情况
  • 创建conda环境时将要安装的一些软件包分析
  • 图书馆管理系统需求规格说明书
  • 含错方程与非线性滤波模型的逼近攻击
  • 重生之我在大学自学鸿蒙构建第一天-《基础篇》
  • 点云配准基础知识
  • 完整教程:Android监听第三方播放获取音乐信息及包名
  • git的各种HEAD以及使用示例
  • OneDrive上传和下载速度慢?有什么解决办法吗? - 指南
  • 详细介绍:深入浅出MATLAB数据可视化:超越plot()
  • 既然道可道相当道,那么传道授业解惑的根基是什么?
  • P10592 BZOJ4361 isn
  • 阿道夫
  • 软件开发公司常犯的5个设计误区,看看你中招了吗?
  • 使用jmeter做压力测试 - 实践
  • CSP2025游记总结
  • 连续出现的字符
  • 详解WebSocket及其妙用 - 指南
  • 2025 csp_j 游忌
  • 利用序列ID漏洞下载整个公司用户数据库的技术分析
  • 详细介绍:STM32 定时中断逻辑拆解:为什么 “每 2 次中断翻一次 LED”,却是 1 秒亮 1 秒灭?