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

NOI2026 线段 + 中位数

赛时思路。


线段

首先看到题目,感觉这个东西直接建图很没有前途,于是我们考虑刻画一下这个可能的答案的形态,于是发现一个性质就是如果没个位置被覆盖了大于等于 \(3\) 次就直接死了,然后我们发现这个条件只要判掉不联通的情况就是充要的。

有了这个东西之后就感觉状态比较自然了:设 \(dp_{i,j,k}\) 表示前 \(i\) 个位置,然后目前最远被覆盖到了 \(j\),用了 \(k\) 条线段的答案。

这个转移就是枚举一条从 \(i\) 开始的线段 \(i, r\),有转移:

\[dp_{i,j, k} \to dp_{{min(j, r) + 1}, {max(j, r)}, {k + 1}} \]

记得特判掉 \(j = r\) 的情况,这个直接转移到答案。

然后就是不选:

\[dp_{i, j, k} \to dp_{i + 1, j, k} \]

还得特判 \(i = j\) 的情况,同上。

接下来就是初值的问题,我们先判掉选两条相同线段的情况,然后我们就考虑对于 \(k = 1\) 的初值就是直接选一条线段(这个赋初值的位置要在选线段的转移之后),然后对于 \(k = 2\) 的初值就是枚举选哪两条就可以了。

分析一下复杂度就是时间上是 \(O(nmk + n^2)\),但是空间开不下,于是我们发现 \(k\) 是固定转移到 \(k + 1\) 的,于是把 \(k\) 作为阶段来做滚动数组就行了。

空间复杂度是 \(O(m^2k)\) 的,在 noi 的机子上跑了 \(1.4s\)


中位数

看到题就直接二分中位数,接下来问题就转化成了划分成 \(t\) 段,使得至少有 \(\lfloor{\frac{t + 1}{2}}\rfloor\) 端和大于等于零。

那么我们可以分类讨论:

对于 \(t\) 为偶数。

我们发现这样的东西形状上一定符合要么靠着左右端点有一段可以的,要么中间有一段相邻两个都可以的,只要有一个这样的形状然后在这样的形状外面有剩下段数个 \(1\) 就行了,对于靠着左右端点的,维护出来最短的可行段,然后剩下的直接用前后缀和求出来有多少个 \(1\) 就行了,对于有两个相邻的,可以维护出来每个点向左向右最短的合法端,然后拼一下就可以了。

对于 \(t\) 为奇数。

情况比较多,但是大致还是上面几种组合一下,然后有一些情况,还是类似的去维护一下,这边讲一下比较难的两种:

对于有两段相邻的我们发现我们可以把这个占用的 \(1\) 的个数挂到右端点和左端点上,然后分别取一下前后缀最小值然后对应位置加起来就可以了。

对于连续三个相邻的,我们可以使用树状数组做到一个 \(\log\),但是我们思考一下就可以发现中间那段最优秀的和肯定为 \(0\),于是就只需要单点查询,就可以做到线性。

赛时写的复杂度为 \(O(n \log^2 n)\) 极限通过,另外一个 \(\log\) 就是上面维护的 \(\log\),noi 机子上跑了 \(0.85s\),但是优化到单 \(\log\) 不困难。

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

相关文章:

  • 【eNSP 项目实战】防火墙用户认证实验
  • 告别云存储烦恼:如何在手机和电脑间建立完全私有的文件同步网络?
  • Geo优化系统源码部署搭建技术化流程分享
  • 2026实力之选:郑州中原区商场装修领域值得关注的品牌机构 - 企业推荐官【官方】
  • 基于Arduino与PN532的NFC门禁系统DIY:从原理到实践
  • Python开发环境搭建与配置全攻略
  • 金山104区块厂房仓储租赁:合规与周转价值解析 - 城刊速递
  • 提示词工程师必修课:用批判性反馈重构提示链——4层质疑框架+实时反馈埋点方案(已通过LLM-Ops认证)
  • 英伟达显卡涨价消息引发关注,奇点算力观察GPU市场新变化
  • 基于ESP32与体感交互的智能骑行安全帽设计与实现
  • Spring Boot 4.x安全监控体系升级与Observation API实践
  • 098、YOLOv8改进实战:Label Smoothing标签平滑与多尺度训练技巧的实践指南
  • DFRobot双十一硬件套装选购指南:从Arduino到ESP32的创客进阶之路
  • 微信数据备份新突破:Sharp-dumpkey免费密钥提取工具完整指南
  • 中山中央空调回收不做广告只做对比:本地回收商家深度测评 - 广东再生资源回收
  • C++字符串处理:从基础原理到现代C++高效实践
  • Linux环境下Intel Edison开发板板级配置完整指南:从串口调试到网络连接
  • 纽扣电池增强器NBM5100A:提升物联网设备续航与性能
  • 企业微信CLI开源项目:自动化办公与系统集成实战
  • 怎么用 AI 写长篇小说?走一遍建书到审计的完整流程
  • 佛山配电柜回收选购指南:3家服务商多维度实力横评 - 广东再生资源回收
  • DM8 单机双节点 DSC 集群部署与故障验证:共享存储、CSS、ASM 与节点接管
  • Windows/macOS 双端 OpenClaw 搭建指南,电脑自动化部署避坑全流程
  • 送礼系统工程:从需求解码到价值匹配的创意礼物全攻略
  • MAA明日方舟助手:解放双手的智能游戏伴侣终极指南
  • oat++框架应用之do、dao、service
  • 零代码RPA革命:3小时用taskt实现桌面自动化终极指南
  • KMS智能激活工具完整使用指南:三步实现Windows和Office永久激活
  • 如何解决报表预览问题:FastReport.OpenSource在.NET应用中的实战指南
  • 如何用XInputTest解决游戏手柄响应延迟问题:3个关键步骤