当前位置: 首页 > 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;
}

相关文章:

  • 【【分享开发笔记,赚取电动螺丝刀】参考 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搜索组件详解
  • 孟夏韵评《无序的学科》丨误读与重构的文化漂流
  • 王东杰评《国家与学术》︱不“国”不“故”的“国学”
  • 中国进出口银行:1-4月投放制造业中长期贷款超1800亿元
  • 长期吃太饱,身体会发生什么变化?
  • 一图读懂丨创新创业人才最高补贴500万元!临港新片区发布创客新政“十二条”
  • 清雪车司机未拉手刹下车导致溜车被撞亡,事故调查报告发布