1051.石子游戏
1051.石子游戏
思路
偶数只能两两合并,但是奇数却有好多拆的方法,考虑不同拆分方法的效果
比如\(5\)
- 1 + 4 一次
- 2 + 3, 3 --> (1 + 2), 2 + 2 --> 4 三次
比如\(7\)
- 1 + 6 一次
- 2 + 5, 5 --> 2 + 3.... 五次
......
全是奇数次,就和直接分成\(1 + (n - 1)\)的效果是一样的
那么就统计可操作次数就好了
别忘了全都是\(1\)的情况
代码
神奇的代码
void solve()
{
int n = 0;
std::cin >> n;
int tmp = 0, cnt = 0, even = 0;
for (int i = 1; i <= n; i++)
{
std::cin >> tmp;
if (tmp == 1)
{
continue;
}
else if (tmp & 1)
{
cnt++;
even++;
}
else
{
even++;
}
}
cnt += even - 1;
if (cnt & 1)
{
std::cout << "Alice";
}
else
{
std::cout << "Bob";
}
}

浙公网安备 33010602011771号