题目链接:https://www.luogu.org/problemnew/show/P1247

题意:nim取石子的题意,多了一个判断先手赢的话,输出先手第一把怎么拿,以及拿完之后每堆还剩多少。

题解:异或和为0直接lose。不为0的话,看res xor a[i]的值如果小于a[i]说明可以取该堆,也就是取a[i] - (res xor a[i])这么多。剩余的就是res xor a[i]。

证明。。洛谷题解的大佬写的挺好的。。QAQ

代码:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
#define ll long long
const int maxn = ; int n,m,x;
int a[maxn]; void nim(){
cin>>n;
int res = ;
for(int i = ; i<= n; i++){
cin>>a[i];
res ^= a[i];
}
if(res == ){
cout<<"lose"<<endl;
}
else{
//cout<<res<<endl;
for(int i = ; i <= n; i++){
if((a[i]^res) < a[i]){
cout<<(a[i] - (a[i]^res))<<" "<<i<<endl;
a[i] ^= res;
break;
}
}
for(int i = ; i <= n; i++){
cout<<a[i]<<" ";
}
cout<<endl; }
} int main(){
nim();
return ;
}

【洛谷】P1247取火柴游戏的更多相关文章

  1. 洛谷P1247取火柴游戏

    题目:https://www.luogu.org/problemnew/show/P1247 可以知道必败局面为n[1]^n[2]^...^n[k]=x=0: 而若x不等于0,则一定可以取一次使其变为 ...

  2. 洛谷P1247 取火柴游戏

    经典NIM游戏. 取XOR和即可. 注意输出方案时,找到大于异或和sum的,变为a[i] ^ sum即可. #include <cstdio> ; int a[N]; int main() ...

  3. 洛谷 P1247 取火柴游戏

    题目传送门 暴力 \((\)由于我这样的初中蒟蒻不\((bu)\)喜\((hui)\)欢\((xie)\)数学证明,所以题解中的证明全是其他大佬的题解已经多次证明过的,这里就不再啰嗦了.\()\) - ...

  4. 洛谷P1288 取数游戏II(博弈)

    洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ...

  5. P1247 取火柴游戏

    题目描述 输入k及k个整数n1,n2,-,nk,表示有k堆火柴棒,第i堆火柴棒的根数为ni:接着便是你和计算机取火柴棒的对弈游戏.取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不 ...

  6. 洛谷——P1123 取数游戏

    P1123 取数游戏 题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取 ...

  7. 洛谷——P2252 取石子游戏

    P2252 取石子游戏 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  8. 【洛谷】P1247 取火柴游戏(Nim)

    题目 传送门:QWQ 分析 蒟蒻根本不会博弈论..... 只知道异或和判断Nim游戏.. 不是很懂输出的选择,所以发一篇博客以待复习 代码 #include <bits/stdc++.h> ...

  9. 洛谷P1288 取数游戏II[博弈论]

    题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流 ...

随机推荐

  1. nginx-413

    修改nginx配置文件:client_max_body_size 300M 修改php.ini upload_max_filesize | post_max_size

  2. linux python2.6升级2.7

    一.升级 Python 2.7.10 版本 1. 准备安装包,系统是最小化安装 # 下载安装依赖的相关包[root@vip ~]# yum install vim gcc make wget -y [ ...

  3. 42-python基础-python3-字符串-原始字符串

    原始字符串 可以在字符串开始的引号之前加上 r,使它成为原始字符串. “原始字符串”完全忽略所有的转义字符,打印出字符串中所有的倒斜杠. 如果输入的字符串包含许多倒斜杠,比如正则表达式字符串,那么原始 ...

  4. HDU 1261 字串数(排列组合)

    字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  5. 利用单选框的单选特性作tab切换

    <RadioGroup v-model="selectType" type="button" @onchange="selectTypeChan ...

  6. Linux使用yum install 安装程序时,提示“另外一个程序锁定了 yum;等待它退出……”

    Linux使用yum install 安装程序时,提示“另外一个程序锁定了 yum:等待它退出……” 原因: yum命令一次只能安装一个软件,所以当你下载安装第二个软件包时,系统进程锁会锁定yum,这 ...

  7. Activity 通知

    //通知图标 int icon = android.R.drawable.stat_notify_chat; //创建通知对象,icon通知图标,tickerText摘要,System.current ...

  8. MyBatis笔记二:配置

    MyBatis笔记二:配置 1.全局配置 1.properites 这个配置主要是引入我们的 properites 配置文件的: <properties resource="db.pr ...

  9. (转)Unity Cinemachine插件,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换*版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插件 ...

  10. shell date 格式化

    https://www.tutorialkart.com/bash-shell-scripting/bash-date-format-options-examples/ DATE=`date '+%d ...