P11629 [WC2025] Nim 游戏 题解

被迫卷入了一场决定一切的 Nim 游戏。

先简化操作:我们每一次可以选择一个数将其第 \(i\) 位从 \(0\) 变成 \(1\),更低位清零。

下面成一个数做上面的那个事情为“执行操作”。

考虑从高位到低位操作。每次选择一些数执行操作,使得这一位的异或和变成零。因为对一位操作不会影响更高位,所以这样顺序做是对的。

设第 \(i\) 位对 \(len_i\) 个数执行了操作。

贪心结论: \(a_1 = 0\) 时,\(len_i\) 一定小于 \(1\)

\(a_1 = 0\) 是特殊性质 B。这时不会出现 \(n\) 为奇数且这一位全为 \(1\),使我们无法操作的情况。这种情况后面再看(

上面结论证明:这一位为偶数时,不妨选 \(len_i = 2\),若选了 \(x,y\) 两个数,代价为 \(2^{i+1} - x - y\),对后面的影响为 \(x \oplus y\)。相当于我们在后面用 \(x \oplus y\) 的代价可以达到相同的效果。显然 \(x + y + x \oplus y \le 2 \times 2^{i-1} < 2^{i+1}\)(对每一位考虑,\(x \oplus y\) 的第 \(i\) 位为 \(1\) 时,\(x,y\)\(i\) 位一定不全为 \(1\)),所以一定不优。

这一位为奇数时,一定要选一个数执行操作。后面就是偶数的情况。不会多选了。

用上面的结论可以暴搜或 DP,获得一些分数。

贪心结论: \(len_i = 1\) 时,选择更低位更大的数一定不劣。

这是我考场上没有意识到的。证明非常简单。如果选小的数更优,将大的数执行操作,然后把小的数增加到大的数,也能有同样的效果。

这样每一轮要执行操作时我们都对这一位排序,选出其中更低 \(i-1\) 位中最大的那个数就行了。可以 \(O(n \log n \log V)\) 算出 B 性质的答案。

搜方案需要精细实现。DFS。按后 \(i-1\) 位从大到小排序,每次方案满 \(m\) 个了或者说搜到错误答案就立即返回即可。可以获得 \(72pts\)

贪心结论: 当一位全是 \(1\)\(n\) 为奇数时,会在一个更高位进行 \(len_i = 2\) 的操作。其他位不变。

首先一定要有一位进行了 \(len_i = 2\) 的操作。所以一定是正确的。且进行操作后,更低位都不会有上述全 \(1\) 的问题了。枚举哪一位进行了该操作即可。根据实现复杂度带 \(2\)\(3\)\(\log\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879289.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十. Redis 事务和 “锁机制”—— 并发秒杀处理的详细说明

十. Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明 @目录十. Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明1. Redis 的事务是什么?2. Redis 事务三特性3. Redis 关于事务相关指令 Multi、Exec、discard和 “watch & unwatch”3.1 快速入门(演示…

使用Tauri框架打造的FPS透视

使用Tauri框架打造的FPS透视,使用javascript读内存绘制透视框使用Vue前端和Rust后端打造FPS透视 前端使用P5js进行canvas绘制 后端封装内存读取工具,前端快速编写代码无需重启调试 Vue前端与后端通讯获取内存数据并在前端渲染 作者声明 [仅供学习 请勿非法用途 从事非法用途出…

Mybatis 动态查询

where和if标签搭配 user表如下图所示 有时候,我们想在java程序中自定义查询条件,例如,我想查询user表,有时候我输入name=“狂神”,查询所有name为狂神的数据,有时候我输入pwd=‘123456’,想查询所有密码为123456的数据,有时候我想查询name为狂神同时密码为123456的数据…

一文搞懂企业架构与DDD的融合

在当今数字化时代,企业架构(EA)和领域驱动设计(DDD)成为了构建高效、灵活且可扩展软件系统的关键方法论。本文将深入探讨企业架构TOGAF框架与DDD的融合之道,分析如何通过这种结合实现从业务战略到技术实现的无缝对接。今天聊聊企业架构与DDD如何进行融合。一、企业架构TO…

【监控】ElastAlert 实现 ES 钉钉群日志告警

一、ElastAlert 概述 ElastAlert 是一个开源的警报框架,由 Yelp 开发,它可以从 Elasticsearch 中提取数据并根据预定义的规则生成警报。ElastAlert 可用于监控您的日志和时间序列数据,以便在发生异常、错误或其他有趣的模式时立即采取行动。ElastAlert 能够与许多通知服务(…

状压dp串讲

知识讲解 前置知识:位运算 (学过的可以跳过) 众所周知,电脑使用的是二进制,那么对二进制位进行的计算就叫做位运算。那么经典的位运算有以下几种:&(按位与)规律:除非两者均为 \(1\),否则其他情况结果均为 \(0\)。若两者为均唯一则答案为 \(1\)。 |(按位或)规律…

DeepSeek本地化部署

DeepSeek-R1本地化部署 在 Mac 上使用 Ollama 运行 DeepSeek-R1,并通过 Open-WebUI 提供 Web 端访问。 1. 安装 Ollama Ollama官方:https://ollama.com/ Ollama 是一个轻量级的 AI 推理框架,支持本地运行 LLM(大型语言模型)。首先,下载并安装 Ollama。 # brew安装ollama …

微服务 - 服务雪崩和限流

1. 服务雪崩 1.1 什么是服务雪崩? 在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧增加。不断累计之下,可能会导致故障的进一步加剧,可能会导致级联式的失败,甚…

CTF-web-矛盾

1.打开链接,查看题目2.要求输入数字1但是又不允许输入数字,可输入1a,弱比较 “=”转化后即为13.即可获得flag

DRF 视图

视图概览 REST framework 提供了众多的通用视图基类与扩展类,以简化视图的编写。 视图的继承关系: 视图的方法与属性: Request 与 Response 1. Request REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpReques…

MySQL训练营-如何判断SQL的主要消耗阶段

慢查询分析思路确认是锁还是执行消耗对于执行消耗,分析执行过程基础知识回顾 InnoDB 聚簇索引结构 CREATE TABLE `t1` (`id` int NOT NULL AUTO_INCREMENT,`a` int DEFAULT NULL,`b` int DEFAULT NULL,`c` int DEFAULT NULL,PRIMARY KEY (`id`),KEY `a` (`a`),KEY `bc` (`b`,c…