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

14 ~ 21/12/2025 做题记录

[CERC2014] The Imp

恶魔有 \(n\) 个物品,每个物品价值为 \(v_i\),购买需要 \(c_i\) 元。

恶魔至多可以使用 \(k\) 次魔法,你和恶魔轮流操作:

  • 你购买一个物品
  • 恶魔要么释放一次魔法销毁这个物品(继续游戏),要么让你拿走这个物品(然后强制结束游戏)

你和恶魔都会采用最优策略,恶魔的目标是最小化你的收益,求你的最大收益。

\(1 \le n,v_i,c_i \le 10^6\)\(0 \le k \le 9\)

Hard Ver. \(0 \le k \le n\)

先做简单版本的,考虑邻项交换,设我们策略里最后买的两个物品是 \(v_1,c_1\)\(v_2,c_2\)
\(1\)\(2\)\(S + \min(v_1 - c_1, v_2-c_1-c_2)\)
\(2\)\(1\)\(S + \min(v_2 - c_2, v_1-c_1-c_2)\)

不失一般性地设 \(v_1 \le v_2\),那么有 \(v_1-c_1-c_2 \le v_2-c_1-c_2 \le v_2 - c_2\)
同时还有 \(v_1-c_1-c_2 \le v_1 - c_1\),也就是说右下角那项总是最小的,选择先 \(1\)\(2\) 总是不劣的。

这个时候就能直接 \(\text{dp}\) 了,但是正着比较难推,考虑我们的结构一定是在前缀选了若干被炸,然后最后拿走了一个,所以倒着来更新。\(f_{i,k}\) 表示在后 \(i\) 个物品里选了一些,被恶魔炸了 \(k\) 次:

  • \(f_{i,0} = \max(v_i - c_i, \ f_{i+1, 0})\)
  • \(f_{i,k} = \max(f_{i+1,k}, \ \min(f_{i+1,k-1}-c_i, \ v_i - c_i)\)

答案是 \(f_{1,k}\),这样是 \(O(nk)\) 的。
这个题我是 23 年做的,最近发现有人发明了 \(0 \le k \le n\) 的 hard ver,看一下怎么做。。。

我擦,做法是二分答案以后,正着反悔贪心(原来 dp 不容易正着做是因为这个 ???)。
就是说如果可以按顺序选出 \(k + 1\) 个物品,满足每个物品的 \(v_i - c_i - S \ge ans\) 那么这个二分的答案就合法,这里 \(S\) 是当前已选了的物品的 \(\sum c_i\)
这个条件是充要的,即恶魔没有办法在任何时候提前结束,使得你的答案小于 \(ans\),非常牛的转化。

如果 \(v_i - c_i - S\) 合法那么就直接贪心拿进来,然后把 \(c_i\) 放到堆里等着反悔。
如果拿不进来,就去堆里找一个最小的 \(c' \lt c_i\) 替换前面选的决策,而因为 \(v_i \ge v'\) 所以这样替换一定是合法的。

这样就 \(O(n \log^2 n)\) 了,非常自然的做法,而且很符合直觉,非常牛。

http://www.rkmt.cn/news/97950.html

相关文章:

  • 28、Ubuntu 网络配置全攻略
  • Spring AI聊天记忆:告别对话失忆的智能解决方案
  • 小白必看:3分钟学会安全关闭Windows Defender
  • 34、深入探索Shell脚本的流程控制与位置参数
  • 19、Perl 数据输入输出与文件读写全解析
  • 零基础入门:5分钟学会使用腾讯元宝API
  • mlr3机器学习框架:新手必看3大核心问题解决方案
  • AutoGPT在碳排放计算工具开发中的自动化支持
  • 1小时打造智能加载检测工具:快马原型开发实录
  • 29、脚本编写与项目构建全攻略
  • Linux----mmap
  • 27、Linux 系统打印与程序编译全攻略
  • LaTeX学习笔记:学术文档排版
  • figma数字转盘交互动态效果
  • JavaEE进阶——Spring事务与传播机制实战指南
  • 2025年年终中国检验检测机构推荐:整合实验室能力与市场口碑的全面评估,10家优质机构详细清单 - 十大品牌推荐
  • 鸿蒙PC UI控件库 - NumberInput 数字输入框详解
  • 鸿蒙PC UI控件库 - SearchInput 搜索输入框详解
  • 2025年带钢品牌深度解析:如何挑选耐用打包铁条?,排行前列的带钢销售厂家口碑推荐优选实力品牌 - 品牌推荐师
  • 2025年年终留学中介机构推荐:全维度服务能力横评,涵盖资源、案例与可靠性的10家机构深度解析 - 十大品牌推荐
  • 21、Debian系统管理与网络配置全解析
  • AutoGPT与Google Calendar联动:智能提醒系统构建
  • NVIDIA NIM、Triton推理服务器和TensorRT-LLM使用场景和作用
  • 乐又迪英语 联系方式: 少儿英语培训服务详情与注意事项 - 品牌推荐
  • 乐又迪英语 联系方式: 剑桥英语KETPET课程选择参考建议 - 品牌推荐
  • kakfa文件清理策略方法和种类
  • springboot学生心理咨询评估系统(11484)
  • NVIDIA NeMo和NIM是用于开发和部署大模型
  • 红黑树:比AVL更“聪明”的平衡树,拆解那些反直觉的核心难点
  • Let‘s Encrypt免费证书与HTTPS配置完全指南