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

CF2140E2

给定 \(n(1 \le n\le 20), m(1 \le m \le 10^6)\) 和一些 \(p_i\)。有 \(n\) 堆石子,每堆石子有 \(1 \sim m\) 个。两个人进行博弈,每次每个人可以取走第 \(p_i\) 堆石子(\(i\) 任选),然后剩下的石堆重新编号,直至只有一堆石子。先手要最大化最后一堆石子的数量 \(x\),后手要最小化 \(x\)。请计算所有石子配置的 \(x\) 之和。

先考虑 E1:\(m = 2\)。显然可以状压,令 \(dp_{c, u, 0/1}\) 表示还剩 \(c\) 堆石子,石子数组成的状态为 \(u\),先手还是后手操作的答案。时间复杂度:\(O(n2^n)\)

现在 \(m\) 扩到了 \(10^6\),可以想办法使得只有两种不同的取值:枚举一个 \(0 \le t < m\),将石子数 \(\le t\) 的看成 \(0\),剩下的看成 \(1\)。那么得到的 DP 值就是 \(x\) 是否大于 \(t\)。而答案正好可以拆解为 \(\sum\limits_{t = 0}^{m - 1} x > t 的配置数量\)

于是搞一次 DP。枚举 \(t\) 算出 \(> t\) 的方案数即可:

\[\sum\limits_{u} dp_{n, u, 0} \cdot t^{n - popcount(u)}(m - t)^{popcount(u)} \]

(有 \(popcount(u)\) 个数 \(\le t\)\(n - popcount(u)\) 个数 \(> t\))。

时间复杂度:\(O(n2^n + m)\)

本题想到 \(m = 2\) 时可以状压,然后再通过枚举 \(t\)\(m\) 转为 \(2\) 即可。

http://www.hskmm.com/?act=detail&tid=32554

相关文章:

  • Codeforces 380E Sereja and Dividing 题解 [ 紫 ] [ 线段树 ] [ 贪心 ] [ 数学 ]
  • JPA教程
  • 夜莺监控设计思考(二)边缘机房架构思考
  • 搜维尔科技:具有人手级别抓握和操纵能力的灵巧手
  • v-model 的实现原理
  • 防塔游戏单机 王国保卫战全集下载 1~5部全系列MOD DLC修改版 安卓+ios+PC电脑版
  • 德州东站换乘攻略(仅供参考)
  • 第十六篇
  • Date 2025.10.6
  • 实验作业2
  • macOS 双开/多开微信WeChat完整教程(支持 4.X 及以上版本) - 实践
  • 快捷运用电脑的方式(不使用鼠标)
  • 2025.10.16总结 - A
  • 初识pytorch:更新网络参数的反向传播、损失函数和优化器
  • Composition API 与 React Hook 很像,区别是什么?
  • 题解:CF1483E Vabank
  • 20251016 正睿二十连测
  • [贝佐斯-六页纸]
  • cc
  • 感知节点@7@ ESP32+arduino+ 第五个程序FreeRTOS 上 增加一个新任务ADC任务
  • 2025年10月切削液厂家 TOP 企业品牌推荐排行榜,全合成切削液,半合成切削液,微乳切削液推荐这十家公司!
  • 普源精电RIGOL DS2202A示波器保存波形到CSV文件过慢解决方法:保存为WFM格式、通过LAN接口使用SCPI+PyVISA控制
  • 动手学深度学习——引言
  • CF1989E Distance to Different
  • AngularJS:构建更智能的Web应用框架
  • 给档案装上“智慧大脑”:文档抽取技术的四大赋能场景
  • P11816QOJ1250 Pionki 轮廓线DP
  • linux系统scatter/gather I/O技术
  • PostgreSQL 为什么不选择 B+ 树索引? - Lafite
  • Joeys shell