题目链接:

https://codeforces.com/problemset/status?my=on

题目大意:

大小为 a * b 的桌子,现在有无限个 r * r 的盘子,游戏的一步操作定义为将盘子放桌上,不能移动桌子上的盘子,不能拿走盘子,现在有两个人玩这个游戏,第一个人先操作,每个人都进行最优的操作,判断谁能赢,第一个人赢输出“First”,第二个人赢输出“Second”

思路:

博弈问题,每个人的最优操作就是将盘子放在桌子中间,当第一个人能放盘子时,第二个人就输了。
这里有两种情况:
1.当第二个人不能放盘子,显然,他输了
2.当第二个人能放盘子,说明剩下的空间中还能放下 四个盘子,因为第一个人放的是中间,而第二个人还能放,说明四个角都还能放,那么当四个角都被填上后,又是第二个人去放盘子,就又是这两种情况了

代码:

#include <bits/stdc++.h>
using namespace std;
int a, b, r;
int main(){
	cin >> a >> b >> r;
	if (2 * r <= a && 2 * r <= b) cout << "First\n";  //能放盘子
	else cout << "Second\n";
	return 0;
}
posted on 2021-11-18 11:57  Hamine  阅读(50)  评论(0编辑  收藏  举报