题解 | 大撒币(指本蒟蒻)
首先要判断能不能放下第一个硬币,要是来防都放不下那何谈后面的呢
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;
}

京公网安备 11010502036488号