Title

1051.石子游戏

1051.石子游戏

思路

偶数只能两两合并,但是奇数却有好多拆的方法,考虑不同拆分方法的效果

比如\(5\)

  1. 1 + 4 一次
  2. 2 + 3, 3 --> (1 + 2), 2 + 2 --> 4 三次

比如\(7\)

  1. 1 + 6 一次
  2. 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";
    }
}

posted @ 2024-11-06 21:54  栗悟饭与龟功気波  阅读(11)  评论(0)    收藏  举报