台阶型Nim游戏

简介: 台阶型Nim游戏

台阶型Nim游戏

题目

https://www.acwing.com/problem/content/894/

现在,有一个 $n$ 级台阶的楼梯,每级台阶上都有若干个石子,其中第 $i$ 级台阶上有 $a_i$ 个石子($i \ge 1$)。

两位玩家轮流操作,每次操作可以从任意一级台阶上拿若干个石子放到下一级台阶中(不能不拿)。

已经拿到地面上的石子不能再拿,最后无法进行操作的人视为失败。

问如果两人都采用最优策略,先手是否必胜。

输入格式

第一行包含整数 $n$。

第二行包含 $n$ 个整数,其中第 $i$ 个整数表示第 $i$ 级台阶上的石子数 $a_i$。

输出格式

如果先手方必胜,则输出 Yes

否则,输出 No

数据范围

$1 \le n \le 10^5$,
$1 \le a_i \le 10^9$

输入样例:

3
2 1 3

输出样例:

Yes

思路

将奇数位置上面的数看成是Nim游戏即可,

必胜状态$a_1 \land a_3 ...\land a_n!=0$

代码

#include <bits/stdc++.h>

#define int long long
using namespace std;


signed main() {
   
#ifndef ONLINE_JUDGE
    freopen("test.in", "r", stdin);
    freopen("test.out", "w", stdout);
#endif
    int n, res = 0, x;
    cin >> n;
    for (int i = 1; i <= n; ++i) {
   
        cin >> x;
        if (i & 1) res ^= x;
    }
    cout << (res ? "Yes" : "No") << endl;


    return 0;
}
相关文章
|
6天前
|
人工智能 决策智能
博弈论:Nim游戏
博弈论:Nim游戏
|
6天前
|
人工智能
拆分-Nim游戏(字节手撕题)
拆分-Nim游戏(字节手撕题)
|
6天前
【力扣】292. Nim 游戏
【力扣】292. Nim 游戏
|
7月前
【Leetcode -292.Nim游戏 -326. 3的幂 -338.比特位计数】
【Leetcode -292.Nim游戏 -326. 3的幂 -338.比特位计数】
21 0
|
6天前
leetcode:292. Nim 游戏(数学推理)
leetcode:292. Nim 游戏(数学推理)
19 0
|
6天前
|
C++
Nim 游戏(C++)
Nim 游戏(C++)
40 0
|
10月前
|
机器学习/深度学习 决策智能
博弈论-nim 游戏
博弈论-nim 游戏
114 0
博弈论-nim 游戏
|
10月前
|
决策智能
SG函数Nim游戏博弈论
SG函数Nim游戏博弈论
51 0
SG函数Nim游戏博弈论
|
人工智能 决策智能
博弈论(NIM游戏——取石子)相关的题目
博弈论(NIM游戏——取石子)相关的题目
121 0
HDU5088 Revenge of Nim II(高斯消元求自由元个数 Nim博弈)
HDU5088 Revenge of Nim II(高斯消元求自由元个数 Nim博弈)
71 0