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

题解:P4170 [CQOI2007] 涂色

Link

有利于加深对区间 dp 理解的一道题。

注意到相交而不包含的两次操作没有意义,完全可以看作两次不交的操作,于是操作的关系就只有两种:不交包含

这很区间 dp,记 \(f_{l,r}\) 为区间 \([l,r]\) 的答案,考虑转移:

不交是容易的,枚举断点即可。

包含的话,前提是 \(s_l=s_r\),此时 \([l,r]\) 就是一个大区间,可以由其中的小区间转移过来。但两端可能有很多连续的 \(s_l\),所以第一种方式,删掉前面和后面所有连续的 \(s_l\),由这个新区间 \(+1\) 转移过来,预处也理可做到 \(\mathcal{O}(1)\) 转移;

第二种方式,直接令 \(f_{l,r}=f_{l+1,r}\),为什么呢?递归考虑,最终会有 \(f_{l,r}=f_{k,r}\),其中 \([l,k)\) 都是 \(s_l\)\(s_k\neq s_l\),此时必然不是包含关系,当成不交情况做,显然最优方式是全是 \(s_l\) 后缀和前面断开(想想为什么),而这段后缀答案显然为 \(1\),也就相当于中间区间的答案加 \(1\) 啦,所以本质上是等价的。

\(\mathcal{O}(n^3)\) 拿下。

http://www.sczhlp.com/news/758.html

相关文章:

  • 课堂分组赛、组队赛小结
  • 【AI News | 20250725】每日AI进展
  • 题解:P13308 故障
  • 今天做什么
  • mmap提高LCD显示效率
  • 用 Python 构建可扩展的验证码识别系统
  • Java学习Day28
  • 语录
  • 深度学习(onnx量化)
  • Redisson
  • P13493 【MX-X14-T3】心电感应 题解
  • uni-app项目跑APP报useStore报错
  • DE_aemmprty 草稿纸合集
  • 22天
  • 基于 Python 的简易验证码识别系统设计与实现
  • java语法的学习笔记
  • 机械运动
  • 【2025.7.28】模拟赛T4
  • 《构建之法》读后感
  • 亚马逊发布TEACh数据集训练家用机器人
  • 日记
  • 完全使用TRAE和AI 开发一款完整的应用----第一周
  • CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
  • SeuratExtend 可视化教程(1):单细胞分析的高颜值绘图指南
  • SpringBoot 默认配置
  • 暑假7.28
  • 计算机硬件:RAID 0、1、5、6、10简单介绍
  • nest基础学习流程图
  • grabcad
  • 2025.7.28总结 - A