P1247 取火柴游戏

题意:

有n堆火柴,两个人轮流操作,每次只能在从一堆中取若干火柴,拿走最后一根火柴的为胜者,给你一个状态,问先手是赢是输

题解:

很经典的nim博弈,结论大家应该都知道就是全部堆数异或起来,为0则先手输,否则先手赢
答案还要求输出第一次取的情况,所有异或后得到state,会存在一个i,使得a[i] ^ state < a[i],这里可以理解成从a[i]中取,取的数量就是state ^ a[i]
洛谷某大佬的详细证明

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=5e5+9;
int a[maxn];
int main()
{int k;int state=0;cin>>k;for(int i=1;i<=k;i++)cin>>a[i],state^=a[i];if(state==0)printf("lose");else {for(int i=1;i<=k;i++){if((a[i]^state)<a[i]){printf("%d %d\n",a[i]-(state^a[i]),i);for(int j=1;j<=k;j++){if(j!=i)printf("%d ",a[j]);else printf("%d ",state^a[i]);}break;}}}return 0;
}

P1247 取火柴游戏相关推荐

  1. P1247 取火柴游戏 (博弈论)

    原题链接:取火柴游戏 - 洛谷 题目描述 输入 k及 k个整数 n1​,n2​,-,nk​,表示有 k 堆火柴棒,第 ii堆火柴棒的根数为ni​:接着便是你和计算机取火柴棒的对弈游戏.取的规则如下:每 ...

  2. P1247ybtoj【数学基础】5章1题【取火柴游戏】

    取火柴游戏 题目 P1247 解析 显然,这是一个NIM博弈的板子 NIM博弈的定义是:有 n n n堆石子,第 i i i堆有 a i a_i ai​个石子,两个玩家轮流取出任意一堆的任意个石子(不 ...

  3. 【游戏中的算法】取火柴游戏算法

    文章目录 一.取火柴游戏算法: 二.C/C++实现代码: 1.模拟两个人随机取火柴: 2.电脑随机取火柴,用户输入取火柴: 一.取火柴游戏算法: 取火柴游戏是一个非常简单有趣的小游戏,只要计算好步骤就 ...

  4. 人机对战之取火柴游戏

    源码 #include<iostream.h> void main() {int a=21, i;cout<<"--------------------------- ...

  5. 【YBTOJ】【Luogu】取火柴游戏

    思路: 经典NIM游戏 c o d e code code #include<iostream> #include<cstdio>using namespace std;int ...

  6. 取火柴小游戏python turtle库

    目录 一.代码展示 二.代码讲解 1.海龟画布初始化和检测用户输入 2.绘制火柴的函数draw_line() 3.主程序 4.奖励环节. 游戏介绍 这是一场电脑和人类的博弈.游戏规则是:一共有21个火 ...

  7. 拿火柴游戏(拿子游戏)

    拿子游戏 拿子游戏.考虑下面这个游戏:桌子上有一堆火柴,游 戏开始时共有n根火柴,两个玩家轮流拿走1根.2根.3根或4 根火柴,拿走最后一根火柴的玩家为获胜方.请为先走的玩家 设计一个制胜的策略(如果 ...

  8. 21 根火柴游戏(常胜将军)

    问题来自头歌 任务描述 本关任务:火柴游戏. 相关知识 为了完成本关任务,你需要掌握:C 语言基础. 火柴游戏 21 根火柴游戏.现有 21 根火柴,两人轮流取,每人每次可以取 1 至 4 根,不可多 ...

  9. java火柴游戏_Java课程设计—拿火柴小游戏

    1 import java.awt.event.*;2 import javax.swing.*;3 importjava.util.Timer;4 importjava.util.Random;5 ...

最新文章

  1. 软件架构设计-五视图方法论
  2. 全球及中国垃圾发电行业运营管理及十四五投资价值评估报告2021-2027年
  3. 临床试验方案应包括哪些条目?
  4. java(系统)实战1
  5. PXE+kickstart自动安装ubuntu14.04
  6. 14行代码AC——1017 A除以B (20分)(大数运算+讲解)
  7. 元祖python_python---tuple元祖
  8. WordPress插件-Wordfence Security v7.4汉化版-可更新
  9. 天池OCR大赛前排方案总结!
  10. 去掉开始菜单中新装程序的红色标记【Windows】
  11. Android应用快捷方式
  12. 车载ECU软件刷新flash driver制作
  13. 硬核接亲!程序员被新娘要求现场写代码,结果万万没想到……
  14. 海洋地球科学开放数据库
  15. [学习笔记-FPGA]Vivado出现信号差分问题
  16. CalendarPicker
  17. 什么是UI?就业前景如何?
  18. 视频剪辑自学怎么入门?借助这款软件可以达到意想不到的效果
  19. 彩色流程图怎么做?这样的操作方法你尝试过吗?
  20. 互转(经纬度、地心坐标、东北天坐标)

热门文章

  1. 惊了!哆啦A梦里最能打的道具,居然真实存在!还打破了世界纪录,看完跪了....
  2. 宫崎骏动画里的新垣结衣见过没?简直美呆!
  3. linux浏览器不能播放音频文件夹,在html中插入音频文件在浏览器中播放音频文件的兼容性问题...
  4. 批量提取文件创建时间_不要眨眼!批量提取文件名,只需30秒
  5. Java开发面试高频考点学习笔记(每日更新)
  6. php大数组查找算法,PHP简单的数组查找算法分享
  7. java中static x 5_java中static作用详解
  8. mysql binlog oplog_mongodb 学习之oplog
  9. 百度网页移动端html,百度移动端开始用网站品牌名代替网址显示
  10. linux编译redis打包,linux下下载redis,并且编译