C++ 数论相关题目 博弈论:拆分-Nim游戏

给定 n
堆石子,两位玩家轮流操作,每次操作可以取走其中的一堆石子,然后放入两堆规模更小的石子(新堆规模可以为 0
,且两个新堆的石子总数可以大于取走的那堆石子数),最后无法进行操作的人视为失败。

问如果两人都采用最优策略,先手是否必胜。

输入格式
第一行包含整数 n

第二行包含 n
个整数,其中第 i
个整数表示第 i
堆石子的数量 ai

输出格式
如果先手方必胜,则输出 Yes。

否则,输出 No。

数据范围
1≤n,ai≤100
输入样例:
2
2 3
输出样例:
Yes
在这里插入图片描述

#include <iostream>
#include <algorithm>
#include <cstring>
#include <unordered_set>using namespace std;const int N = 110;
int n;
int f[N];//存i个状态的sg值int sg(int x)
{if(f[x] != -1) return f[x];unordered_set<int> S; //哈希表存储每个局面可以到的局面//这个地方特别关键:在集合的Nim游戏中,我们可以明显的知道可以到的下一个状态是什么//比如(x - s[i]),这道题里面需要遍历一下所有可能到达的状态,并且异或起来for(int i = 0; i < x; i ++ )for(int j = 0; j <= i; j ++) //用i和j表示分成的两个状态S.insert(sg(i) ^ sg(j));for(int i = 0; ; i ++ )if(!S.count(i))return f[x] = i;
}int main ()
{cin>>n;memset(f, -1, sizeof f); // 记忆化搜索,因为sg值都是自然数,所以初始化成-1,代表没有求过int res = 0;while(n -- ){int x;cin>>x;res ^= sg(x);}if(res) puts("Yes");else puts("No");return 0;
}

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

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

相关文章

PMP中的数据收集工具:打开项目成功的钥匙

在项目管理中&#xff0c;数据收集是关键的一环。准确、及时的数据能够为项目决策提供可靠的依据&#xff0c;帮助项目经理更好地监控项目进展、识别潜在风险&#xff0c;并制定有效的应对措施。本文将深入探讨PMP&#xff08;项目管理专业&#xff09;中常用的数据收集工具&am…

二层环路和三层环路

环路的原因&#xff1a;二层环路是由于物理拓扑出现环路&#xff0c;如3台交换机3角形连接。 三层环路一般物理拓扑有环路&#xff0c;并且设备之间路由表形成互指。(物理拓扑不成环&#xff0c;2台设备使用静态路由互指也可能成环&#xff0c;这种特殊情况除外)。 二层设备和三…

力扣题目训练(6)

2024年1月30日力扣题目训练 2024年1月30日力扣题目训练367. 有效的完全平方数374. 猜数字大小383. 赎金信99. 恢复二叉搜索树105. 从前序与中序遍历序列构造二叉树51. N 皇后 2024年1月30日力扣题目训练 2024年1月30日第六天编程训练&#xff0c;今天主要是进行一些题训练&…

I2C 设备驱动

V5.10 参考文档&#xff1a;Documentation/i2c/writing-clients.rst static struct i2c_device_id foo_idtable[] {{ "foo", my_id_for_foo },{ "bar", my_id_for_bar },{ }};MODULE_DEVICE_TABLE(i2c, foo_idtable);static struct i2c_driver foo_drive…

在ubuntu上在安装Squid代理服务器

Squid 是一个代理和缓存服务器&#xff0c;它将请求转发到所需的目的地&#xff0c;同时保存请求的内容&#xff0c;当你再次请求相同内容时&#xff0c;他可以向你提供缓冲内容&#xff0c;从而提高访问速度。Squid代理服务器目前支持的协议有&#xff1a;http、SSL、DNS、FTP…

App测试中ios和Android有哪些区别呢?

App测试中&#xff0c;大家最常问到的问题就是&#xff1a;ios和 Android有什么区别呢&#xff1f; 在Android端&#xff0c;我们经常会使用 JavaScript、 HTML、 CSS等技术来编写一些简单的 UI界面。而 iOS端&#xff0c;我们经常会使用到 UI设计、界面布局、代码结构、 API等…

C++——特殊类

特殊类 文章目录 特殊类一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象方案一&#xff1a;析构函数私有化方案二&#xff1a;构造函数私有化 三、请设计一个类&#xff0c;只能在栈上创建对象四、请设计一个类&#xff0c;不能被继承五…

Linux系统MySQL重置root密码

MySQL是一种开源的关系型数据库管理系统&#xff0c;广泛用于Web应用程序的后台数据存储。在MySQL中&#xff0c;root是默认的超级用户&#xff0c;具有最高权限。然而&#xff0c;有时候我们可能会遇到忘记root密码的情况&#xff0c;或者需要重置root密码以增加数据库的安全性…

微软Office Plus与WPS Office的较量:办公软件市场将迎来巨变?

微软Office Plus在功能表现上远超WPS Office&#xff1f; 微软出品的Office套件实力强劲&#xff0c;其不仅在办公场景中扮演着不可或缺的角色&#xff0c;为用户带来高效便捷的体验&#xff0c;而且在娱乐生活管理等多元领域中同样展现出了卓越的应用价值 作为中国本土办公软…

Flyway数据库迁移工具入门教程

前言 在现代应用程序开发中&#xff0c;数据库架构的管理和版本控制是一个至关重要的环节。Flyway是一款流行的开源数据库迁移工具&#xff0c;它为开发者提供了一种简单、可预测的方式来管理数据库变更&#xff0c;确保数据库架构与应用代码同步更新。本文将引导您快速入门Fl…

Leetcode 第 381 场周赛题解

Leetcode 第 381 场周赛题解 Leetcode 第 381 场周赛题解题目1&#xff1a;3014. 输入单词需要的最少按键次数 I思路代码复杂度分析 题目2&#xff1a;3015. 按距离统计房屋对数目 I思路代码复杂度分析 题目3&#xff1a;3016. 输入单词需要的最少按键次数 II思路代码复杂度分析…

HarmonyOS使用Web组件加载页面

1、加载网络页面 在Web组件创建时&#xff0c;指定默认加载的网络页面 。在默认页面加载完成后&#xff0c;如果开发者需要变更此Web组件显示的网络页面&#xff0c;可以通过调用loadUrl()接口加载指定的网页。 默认在Web组件加载完“www.baidu.com”页面后&#xff0c;点击按…

孩子叛逆怎么办?

孩子叛逆是一个常见的问题&#xff0c;但是家长和监护人可以通过以下方法来处理这个问题&#xff1a; 沟通和理解&#xff1a;与孩子保持良好的沟通&#xff0c;了解他们的想法和感受&#xff0c;是解决孩子叛逆问题的关键。家长和监护人需要耐心倾听孩子的意见和想法&#xf…

html+js+css静态故宫主题

登录代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>登录 - 故宫博物院</title><…

C语言菜鸟入门·函数

目录 1. 函数的定义 2. 函数声明 3. 函数调用 4. 函数参数 4.1 传值调用 4.2 引用调用 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数&#xff0c;即主函数 main() &#xff0c;所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同…

android tts播报破音解决方案汇总

导航app引导中经常遇到破音&#xff0c;这里也将之前经历过的方案收集以下&#xff0c;方便以后选择&#xff1a; 1 对于开始和结尾破音&#xff1a; 可以用升降音来处理 两种方式 一种是 直接对开始和结束的时间段进行音量直接渐进改变。这里配的是200ms的渐变。 VolumeSha…

datax数据入库模板

目录 一、txt2hive 二、txt2mysql 一、txt2hive {"setting": {},"job": {"setting": {"speed": {"channel": 4}},"errorLimit": {"percentage": 0.02},"content": [{"reader": …

【C++】C++入门—— 引用

引用 1 前情提要2 概念剖析3 引用特性4 常引用5 使用场景5.1做参数5.2 做返回值 6 传值 传引用的效率比较7 引用与指针的差异Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见 1 前情提要 在C语言中&#xff0c;我们往往会遇见复杂的指针&#xff08;如…

论文阅读-MapReduce

论文名称&#xff1a;MapReduce: Simplified Data Processing on Large Clusters 翻译的效果不是很好&#xff0c;有空再看一遍&#xff0c;参照一下别人翻译的。 MapReduce:Simplified Data Processing on Large Clusters 中文翻译版(转) - 阿洒 - 博客园 (cnblogs.com) 概…

C#,欧拉数(Eulerian Number)的算法与源代码

1 欧拉数 欧拉数特指 Eulerian Number&#xff0c;不同于 Euler numbers&#xff0c;Eulers number 哦。 组合数学中&#xff0c;欧拉数&#xff08;Eulerian Number&#xff09;是从1到n中正好满足m个元素大于前一个元素&#xff08;具有m个“上升”的排列&#xff09;条件的…