题目名称 3197. 石子游戏
输入输出 nim.in/out
难度等级 ★★★☆
时间限制 2000 ms (2 s)
内存限制 512 MiB
测试数据 20
题目来源 Gravatar梦那边的美好ET 于2019-06-26加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:4, 提交:10, 通过率:40%
Gravatarbilibili 100 2.119 s 41.02 MiB C++
Gravatar梦那边的美好ET 100 2.635 s 18.23 MiB C++
Gravatar... 100 2.884 s 18.23 MiB C++
Gravatarbilibili 100 6.713 s 24.40 MiB C++
Gravatar梦那边的美好ET 75 7.490 s 18.23 MiB C++
Gravatarbilibili 60 17.584 s 20.53 MiB C++
Gravatar梦那边的美好ET 40 0.664 s 10.02 MiB C++
Gravatarbilibili 0 3.241 s 21.97 MiB C++
Gravatarbilibili 0 3.468 s 21.97 MiB C++
Gravatar梦那边的美好ET 0 20.000 s 18.23 MiB C++
关于 石子游戏 的近10条评论(全部评论)
这题不开O2有点卡常。。。
Gravatarbilibili
2019-06-26 19:10 1楼

3197. 石子游戏

★★★☆   输入文件:nim.in   输出文件:nim.out   简单对比
时间限制:2 s   内存限制:512 MiB

【题目描述】

Alex和Bob在玩游戏。游戏规则如下:桌上有 n 堆石子,每堆石子有 ai 个,Alex和Bob轮流操作,Bob做第一次操作。每次操作时,操作者可以选择一堆石子,并从这堆石子中取出至少一个石子。最后无法操作的人输。可以发现这就是一个Nim游戏。

Alex发现他并不能赢,于是他决定删去若干堆石子(可以不删,也可以全删,删去一堆石子可以理解为将这堆石子的个数变为 0 个),使得在双方都采用最优决策的情况下,Alex能赢。同时Alex希望留下尽量多的堆数,你需要求出最多可能留下的堆数。

【输入格式】

第一行一个整数 n 表示石子堆数。

第二行 n 个整数,分别表示 a1; a2; a3; ... an。

【输出格式】

一行 1 个整数,表示最多能剩下多少堆石子。

【样例输入】

8
1 9 2 6 0 8 1 7

【样例输出】

7

【提示】

40%数据 n*maxai ≤ 10000000

100%数据 1 ≤ n ≤ 500000; 0 ≤ ai ≤ 500000。