题解 | 大撒币(指本蒟蒻)

首先要判断能不能放下第一个硬币,要是来防都放不下那何谈后面的呢

if (2*r > min(a, b))

思考

然后就是一波思考

如果说只能放下一个硬币,那么很明显,Alice赢

接下来要想,周围还能放几个

1.如果理论上总共可以并排放俩,那么Alice肯定要根据自己的最佳策略,放在中心,那么就不能在旁边放了,此时应该是Alice赢

比如:a,b,r=4,2,2

2.如果理论上可以放下3个,那么放的顺序是Alice->Bob->Alice,没错又是Alice赢

比如:a,b,r=6,2,2

3.相同的,如果是可以放下4个,6个,8个......显然,都是Alice赢

4.如果是5,7,9......会发现Alice放完以后没有Bob能放的,所以还是Alice赢

顺序为Alice->Bob->Alice->Bob->Alice...

综上

只要能往里放硬币,那么谁先手谁赢

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int r, a, b;
    cin >> a >> b >> r;
    if (2 * r > min(a, b))
    {
        cout << "Bob";
    }
    else
    {
        if (min(a, b) >= 2 * r)
        {
            cout << "Alice" << endl;
        }
        else
        {
            cout << "Bob" << endl;
        }
    }

    return 0;
}