P1247 取火柴游戏
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 取火柴游戏相关推荐
- P1247 取火柴游戏 (博弈论)
原题链接:取火柴游戏 - 洛谷 题目描述 输入 k及 k个整数 n1,n2,-,nk,表示有 k 堆火柴棒,第 ii堆火柴棒的根数为ni:接着便是你和计算机取火柴棒的对弈游戏.取的规则如下:每 ...
- P1247ybtoj【数学基础】5章1题【取火柴游戏】
取火柴游戏 题目 P1247 解析 显然,这是一个NIM博弈的板子 NIM博弈的定义是:有 n n n堆石子,第 i i i堆有 a i a_i ai个石子,两个玩家轮流取出任意一堆的任意个石子(不 ...
- 【游戏中的算法】取火柴游戏算法
文章目录 一.取火柴游戏算法: 二.C/C++实现代码: 1.模拟两个人随机取火柴: 2.电脑随机取火柴,用户输入取火柴: 一.取火柴游戏算法: 取火柴游戏是一个非常简单有趣的小游戏,只要计算好步骤就 ...
- 人机对战之取火柴游戏
源码 #include<iostream.h> void main() {int a=21, i;cout<<"--------------------------- ...
- 【YBTOJ】【Luogu】取火柴游戏
思路: 经典NIM游戏 c o d e code code #include<iostream> #include<cstdio>using namespace std;int ...
- 取火柴小游戏python turtle库
目录 一.代码展示 二.代码讲解 1.海龟画布初始化和检测用户输入 2.绘制火柴的函数draw_line() 3.主程序 4.奖励环节. 游戏介绍 这是一场电脑和人类的博弈.游戏规则是:一共有21个火 ...
- 拿火柴游戏(拿子游戏)
拿子游戏 拿子游戏.考虑下面这个游戏:桌子上有一堆火柴,游 戏开始时共有n根火柴,两个玩家轮流拿走1根.2根.3根或4 根火柴,拿走最后一根火柴的玩家为获胜方.请为先走的玩家 设计一个制胜的策略(如果 ...
- 21 根火柴游戏(常胜将军)
问题来自头歌 任务描述 本关任务:火柴游戏. 相关知识 为了完成本关任务,你需要掌握:C 语言基础. 火柴游戏 21 根火柴游戏.现有 21 根火柴,两人轮流取,每人每次可以取 1 至 4 根,不可多 ...
- java火柴游戏_Java课程设计—拿火柴小游戏
1 import java.awt.event.*;2 import javax.swing.*;3 importjava.util.Timer;4 importjava.util.Random;5 ...
最新文章
- 软件架构设计-五视图方法论
- 全球及中国垃圾发电行业运营管理及十四五投资价值评估报告2021-2027年
- 临床试验方案应包括哪些条目?
- java(系统)实战1
- PXE+kickstart自动安装ubuntu14.04
- 14行代码AC——1017 A除以B (20分)(大数运算+讲解)
- 元祖python_python---tuple元祖
- WordPress插件-Wordfence Security v7.4汉化版-可更新
- 天池OCR大赛前排方案总结!
- 去掉开始菜单中新装程序的红色标记【Windows】
- Android应用快捷方式
- 车载ECU软件刷新flash driver制作
- 硬核接亲!程序员被新娘要求现场写代码,结果万万没想到……
- 海洋地球科学开放数据库
- [学习笔记-FPGA]Vivado出现信号差分问题
- CalendarPicker
- 什么是UI?就业前景如何?
- 视频剪辑自学怎么入门?借助这款软件可以达到意想不到的效果
- 彩色流程图怎么做?这样的操作方法你尝试过吗?
- 互转(经纬度、地心坐标、东北天坐标)
热门文章
- 惊了!哆啦A梦里最能打的道具,居然真实存在!还打破了世界纪录,看完跪了....
- 宫崎骏动画里的新垣结衣见过没?简直美呆!
- linux浏览器不能播放音频文件夹,在html中插入音频文件在浏览器中播放音频文件的兼容性问题...
- 批量提取文件创建时间_不要眨眼!批量提取文件名,只需30秒
- Java开发面试高频考点学习笔记(每日更新)
- php大数组查找算法,PHP简单的数组查找算法分享
- java中static x 5_java中static作用详解
- mysql binlog oplog_mongodb 学习之oplog
- 百度网页移动端html,百度移动端开始用网站品牌名代替网址显示
- linux编译redis打包,linux下下载redis,并且编译