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

P10627 中暑

题目大意:

\(n\) 个盒子,每个盒子有个容量 \(a_{i}\),接下来有 \(m\) 次投球操作。
每次给定一个 \(x\),表示你可以将当前这个球放到第 \(x\) 或者第 \(x + 1\) 个盒子里(前提是他没满),如果两个盒子都满了,就将球放到另外一个无穷大的容器中。
求那个无穷大的容器最多能盛多少球。
\(n,m \le 8000\)

解题思路:

没有什么好的贪心策略,考虑 \(dp\)
看着像二分图匹配问题,但直接做不能知道什么时候两侧的盒子全满了。

考虑放在相邻的两个之间的球,能贡献答案的一定是一个时间的后缀。
由于我们不能记录每个时刻的盒子的状态,考虑钦定每个盒子结束的时间 \(t_{i}\),特殊的,如果 \(t_{i} = inf\),表示这个盒子没满。
那么我们对于一个 \(i\) 时刻放在 \(x\)\(x + 1\) 之间的球,如果 \(i > \max(t_{x}, t_{x + 1})\),那么他就能贡献答案。

至于一组 \(t\) 合不合法,只需要看他能不能每个空位都全部匹配上,而一个球能匹配一个箱子当且仅当他俩相邻且 \(t_{i}\) 大于等于球出现的时间。
那么根据 \(Hall\) 定理,要对每个 \(l,r\) 都满足 \(\sum_{i = l}^{r} a_{i} \le\) 能取到的并集,当然不能包含 \(t_{i} = inf\) 的。

这样就能从前往后 \(dp\) 了,设 \(dp_{i,j,k}\) 表示前 \(i\) 个盒子,最后一个盒子选的 \(t_{i}\)\(j\),且前面的最小值为 \(k\) 的答案。
这样枚举下一个选的 \(t_{i + 1}\),就能做到 \(O(n^3)\)

然后用前缀后缀优化一下就行。
\(O(n^2)\)

如果 \(dp\) 里需要记录状态,考虑钦定是一种很常用的方法。

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

相关文章:

  • C语言“变量”与Python“Name”:跨语言核心概念及内存模型辨析
  • 逆向基础--C++介绍与环境 (01)
  • 【技术术语】静默失效
  • 深入解析:Git Commit Message 最佳实践:从一次指针Bug说起
  • 2025年文化节活动篷房订做厂家权威推荐榜单:航空机库篷房/体育篷房/宴会篷房源头厂家精选
  • Docker 资源限制与容器管理 - 详解
  • 【技术术语】惊群效应
  • 使用 gitee 完整简要演示 20251108
  • Spide - Personal Blog Magazine WordPress Theme Download - 详解
  • 【技术术语】即发即弃
  • 深入解析:wpf之命令
  • 【技术术语】指数退避策略
  • 【技术术语】冒烟测试
  • 【技术术语】服务等级协议
  • 【技术术语】命令查询职责分离
  • 【技术术语】命令查询职责分离
  • 2025年粉末分级机气流优质厂家权威推荐榜单:气流分级机/气流分级机供应/卧式气流分级机源头厂家精选
  • 【技术术语】蓝绿部署
  • 2025年汽车内饰模具批发厂家权威推荐榜单:汽车轻量化模具/复材模具定制/机器人模具源头厂家精选
  • 【技术术语】OLAP与OLTP详解
  • 焊接机械手气体节能小秘诀
  • JavaScript性能优化实战:按需引入——避免全量导入库 - 详解
  • 2025年南通AI培训公司权威推荐榜单:智能体/GEO/AI搜索源头公司精选。
  • 【URP】Unity[后处理]色彩偏移,中间调,高光增强-Lift,Gamma,Gain
  • 2025年有实力的刮板蒸发器厂家权威推荐榜单:新型刮板蒸发器/耐用的刮板蒸发器/高品质的刮板蒸发器源头厂家精选
  • 引用非当前解决方案sln的项目csproj编译报错
  • 从“内存容器”到“对象标签”:解构C到Python的编程认知迁移
  • 我的书库(书单)
  • Redis-用户签到(BitMap) - 指南
  • 2025年油溶性染料订做厂家权威推荐榜单:PET染料/透明红B/水性荧光示踪剂源头厂家精选