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

算法-尼姆博弈

解题思路

这是一个经典的博弈论问题,可以使用Nim游戏的思想来解决。

Nim游戏是一个二人博弈,游戏的初始状态为有n堆石子,每堆石子的数量可以是任意自然数。双方轮流进行行动,每次行动可以从任意一堆石子中取走若干个石子(不能不取),取走最后一个石子的人获胜。

根据Nim游戏的定理,如果所有堆的石子数量的异或和为0,则先手必败,否则先手必胜。这个定理可以通过数学归纳法证明。

对于这个问题,我们可以将每堆钱看做一堆石子,那么问题就转化为了Nim游戏。如果所有堆的钱数异或和为0,则小明必败,否则小明必胜。

#include <iostream>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
void solve(){
  ll n;cin>>n;
  ll a[N];
  ll sum=0;
  for(ll i=1;i<=n;i++){
    cin>>a[i];
    sum^=a[i];
  }
  if(sum==0){
    cout<<"YES"<<endl;
  }else{
    cout<<"NO"<<endl;
  }
}
int main()
{
  ll t;cin>>t;
  while(t--) solve();
  return 0;
}

http://www.dtcms.com/a/118380.html

相关文章:

  • 【【分享开发笔记,赚取电动螺丝刀】参考 RT-thread 的方式管理初始化函数调用】
  • 【Linux】iptables防火墙基本概念
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记2
  • 网络安全应急响应-文件痕迹排查
  • Nginx 反向代理:从入门到精通
  • 硬盘分区格式方案之 MBR(Master Boot Record)主引导记录的 主分区 和 扩展分区 笔记250407
  • KWDB 创作者计划—人工智能赋能工业制造:智能制造的未来之路
  • M1使用docker制作镜像xxl-job,供自己使用
  • IntelliJ IDEA下开发FPGA——FPGA开发体验提升__上
  • springboot 项目怎样开启https服务
  • 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
  • 03_docker 部署 nginx 配置 HTTPS 并转发请求到后端服务
  • WebVTT 教程
  • dfs练习
  • Automattic 裁员16%,Matt Mullenweg称此举旨在提升盈利能力并增强投资实力
  • ZoomCharts使用方法
  • 线性代数:公共解
  • dolphinscheduler单机部署链接oracle
  • 智慧农业示范园区大数据分析平台整体解决方案
  • 【Easylive】Elasticsearch搜索组件详解
  • Android Input——IMS启动流程(二)
  • ubuntu下的node.js的安装
  • 带Label的韦恩图(vue)
  • 【Java】Maven
  • 【软件测试】自动化测试结合 CI/CD有哪些方案
  • Oracle 数据库查询表广播
  • 青蛙吃虫--dp
  • 【蓝桥杯】动态规划:线性动态规划
  • PhotoShop学习07
  • PostIn V1.0.8版本发布,IDEA 插件支持一键扫描上报,让接口定义不再繁琐