Codeforces 197A Plate Game

一、题意

你有一个长方形的桌子,长度 a ,宽度 b ,以及无限多的半径 r的圆盘。

两位玩家玩以下游戏:他们轮流把圆盘放在桌子上,使得盘子之间不能互相重叠(但他们的边缘可以互相接触),任何盘子上的任何点都位于桌子的边界内(也就是盘子的任意一部分不能悬空)。在比赛中,人们不能移动已经摆在桌子上的盘子。不能再往桌子上合法的摆圆盘的玩家输。

你的任务是确定哪个玩家赢了,先放圆盘的玩家称为“First”,后放圆盘的玩家称为“Second”,当然两个球员都发挥得最好。

二、分析

实际上,这道题十分简单,你看是A题就知道了

如果这两位玩家都按最聪明的方法,而你不会做这道题,说明你没有这两位玩家聪明

那对于两位玩家,怎样才算最优策略呢?

我们注意到长方形的桌子是中心对称的,那也就是说,除了对称点,桌上的其他点都有一个点与之对应

那第一位玩家可就计上心来了,他可以把圆片放在最中间,那么无论第二位玩家怎么走,他都把圆片放在对称的地方。

这样的话,第二位玩家可就任他宰割了 第一位玩家就赢了。

但有一个前提,就是第一位玩家在中心点能放的下,否则第二位玩家就胜利了。

所以我们的任务就是,求桌子上能不能放下一张圆片。

于是,这道题就结束了。真不愧是A题。

三、代码

#include<iostream>
using namespace std;
int main(){
    int n,m,k;
    cin>>n>>m>>k;
    if(n<2*k||m<2*k){
        cout<<"Second";
    }else cout<<"First";
    return 0;
}

其实这么短的代码应该也没人要吧……

posted on 2022-08-21 21:28  阳光快乐9698  阅读(64)  评论(0)    收藏  举报