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

题解:AT_agc027_e [AGC027E] ABBreviate

题意:很简单了,不再赘述。

做法:

我们先考虑最后的串会被更新成什么样子,发现应该是一段区间会缩起来成为一个字符,那么我们考虑一段怎么样的区间会变成 ab

我们考虑一个能缩的区间会缩成什么或者不能缩,首先从 a,b 的个数上考虑,要不然是 \(+2,-1\) 要不然是 \(-1,+2\),所以我们模 \(3\),考虑给 \(a\) 赋权为 \(1\)\(b\) 赋权为 \(2\),那么一段区间缩成什么取决于区间和,当然为 \(0\) 就说明这个区间没救了缩不了。这是一个必要条件。

那么上面这个东西的 bug 在哪里呢?我们手玩一下发现问题好像只有在 abababa... 这样交替的会出问题,那么我们就考虑再加一个条件也就是要求一定要有相邻两个元素相等。

接下来我们来说明一下,考虑归纳,那么我们只需要说明对于一个有相邻元素相等的串,他可以缩成一个长度更小且有相邻相同的串,这个非常好说明,我们拉出来那一对位置,假设是 aa,考虑他们的两端,如果有 b 那么直接缩证明完了,否则就是 ...aaaa... 状物,那么直接缩两次就可以了。

那么我们考虑怎么计数,如果我们现在有一个串 \(s\),我们要判定能不能缩成 \(t\),该如何判断。

首先他们赋值后模 \(3\) 肯定是要相同的,然后我们发现一件事情,我们其实可以对于 \(t\) 从前往后贪心地用 \(s\) 中的一段去匹配 \(t\) 中的字符。因为最后剩出来的那一段一定模 \(3\)\(0\),所以我们可以直接划到最后一个字符里去。

那么我们可以设一个 dp,\(dp_i\) 代表用后缀 \(s_{i\cdots n}\) 能缩出来哪些串,假设我们能快速算出来 \(nxt_{i,0},nxt_{i,1}\),这里 \(nxt_{i,0/1}\) 代表从 \([i,nxt_{i,0/1}]\) 可以缩成 a/b 并且长度最小,那么我们的转移式就是 \(dp_i = dp_{nxt_{i,0}} + dp_{nxt_{i,1}}+[s_{i\cdots n} 和为 \ 0]\),这里加上最后这个东西是为了方便往前加整段,当然注意这样对于 \(1\cdots n\) 整个权值为 \(0\) 的情况多算一个空串,要减掉。

http://www.zskr.cn/news/9612.html

相关文章:

  • 【PostgreSQL 17】11 窗口函数
  • 商家列表管理与公众号二维码绑定​,方便对用户进行消息通知提醒
  • linux权限细化管理的三种方法:polkit sudoer doas做权限管理
  • Ansible的安装和使用
  • 详细介绍:【TEC045-KIT】基于复旦微 FMQL45T900 的全国产化 ARM 开发套件
  • 完整教程:stm32f103c8t6 led闪灯实验
  • eslint
  • Leveraging Context-Aware Prompting for Commit Message Generation 论文笔记
  • 【ACM独立出版|往届已EI、Scopus检索|合作SSCI】第二届数字经济与计算机科学国际学术会议(DECS 2025)
  • 20250518_信安一把梭_医院抓取流量
  • OTP绕过漏洞:当后端过度信任前端时的安全灾难
  • 2MHz 8-bit 微控制器 with 64 Pins,M38049FFLKP ADR5040ARTZ TMS320F28062PZT K4AAG165WA-BCTD存储器
  • 实用指南:【Kubernetes】(六)Service
  • 撒钱岛小游戏管理系统:私域流量变现新选择,趣味与收益双赢
  • 多商户的在线客服系统,直接在小程序的商家中嵌入我们的商家聊天链接
  • 多客云 Ai 短视频批量剪辑矩阵系统:高效创作与智能管理的一体化解决方案
  • [ABC077D] Small Multiple 同余最短路
  • c# 保存文件 - 先保存到临时文件,保存成功后修改文件名
  • 20250427_信安一把梭_No11
  • 运营商数据分类分级:最佳实践、典型案例与智能化方案
  • .NET性能优化-使用RecyclableBuffer取代RecyclableMemoryStream
  • 20250415_信安一把梭_encode
  • Linux开机启动进入紧急模式emergency mode的解决方法 - 规格严格
  • Apifox调试报错信息
  • 故障处理:Oracle 19.20未知BUG导致oraagent进程内存泄漏的案例处理
  • esp32 stm32 ros2 三者区别
  • 前端 10 个 JS 神 API,开箱即用
  • 故障处理:清除 DBA_DATAPUMP_JOBS 视图中的异常数据泵作业
  • Web自动化测试智能体详解
  • Playwright自动化测试框架与AI智能体应用