专栏文章
nim游戏 题解
题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqecko2
- 此快照首次捕获于
- 2025/12/04 03:25 3 个月前
- 此快照最后确认于
- 2025/12/04 03:25 3 个月前
给定一个石子堆序列,你可以向第 个石子堆添加 个石子使得 ,求出 的最小值,并求出至多 种好的方案。第一问的分数占 。。
题目保证了总是存在输出量不大的输出方式,这立刻给我们一个提示:许多好的方案中,只有 个位置有值。
先来思考特殊性质 B:,这占了 分。
我们有两种转述题意的方式:
- 每位可以分配偶数个 ,需要保证分配到每个数上的和 。
- 从高往低更改,扫到第 位的时候选择一些此刻该位为 的数,将该位置 ,并把它们的低位置 。
第一种转述方式看上去十分简洁,但本题的关键性质是 更改量 相比之前不大,所以我们采用第二种理解方式。
有性质:在 时,每位至多选择一个数。
我们来证明这个结论。假设我们在第 位更改了 个数,随便挑选其中的两个数,令它们的低位是 ,则代价是 ,对总异或和的影响是 。考虑低位的合法方案,我们可以花费至多 的代价(在 上)构造一个新的合法方案。这个方案和原方案的代价差小于 ,显然 ( 三个数中每位至多两个 )。所以我们证明了原方案不优。并且新方案的低位多了 可以选择,若选择它们还可以减少代价。
然后我们可以继续猜结论:选择低位更大的数,总是不劣于低位更小的数。
这个好证,假设我们有两个选项其低位是 ,假设我们选了 ,贡献是 ,若后面 都没有被选,则显然换成 更优。若之后 又被选了,找出 被选的最高位 ,若 的 ,显然 选哪个是一样优的,若 ,则 ,这意味着我们直接高位选 ,然后在 空出来的第 位上选一个都不劣。
这样我们就会了第一问,如果要选的话,我们直接选择低位最大的数即可,提前把 的结果排好序,直接搜即可,每个被选中的节点至多会被所有低位遍历一次,复杂度 。
需要注意的是,我们的爆搜过程只会向一个地方递归,即选 个数时直接递归,选 个数时枚举最大的可选数递归,没有就递归 。
如果你把每位按照 的结果排好序,复杂度 ,否则暴力实现也可以做到 。
有了第二个结论,第二问也是简单的,每位从高往低顺着搜,不合法了立刻停止即可,每次不合法最多拉出一条 的链,所以是 的。
在没了特殊性质 B 的情况下,我们发现当我们没 可用时,我们有可能执行“选两个数”,这样复杂度就是一条长为 的链上每个点”分化“出一条选两个数的情况,复杂度比原来多一个 。
需要注意的是,在搜索第二问的过程中,使用不同的 视为不同的方案,所以我们把所有 记下来一起搜。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...