CF197A Plate Game
Posted larry-zero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF197A Plate Game相关的知识,希望对你有一定的参考价值。
题目描述
你有一个长方形的桌子,长度 a ,宽度 b ,以及无限多的半径 r的圆盘。
两位玩家玩以下游戏:他们轮流把圆盘放在桌子上,使得盘子之间不能互相重叠(但他们的边缘可以互相接触),任何盘子上的任何点都位于桌子的边界内(也就是盘子的任意一部分不能悬空)。在比赛中,人们不能移动已经摆在桌子上的盘子。不能再往桌子上合法的摆圆盘的玩家输。
你的任务是确定哪个玩家赢了,先放圆盘的玩家称为“First”,后放圆盘的玩家称为“Second”,当然两个球员都发挥得最好。
输入输出样例
输入 #1
5 5 2
输出 #1
First
输入 #2
6 7 4
输出 #1
Second
解题思路
简单的博弈论
我们的策略是,若First能放,则我们后面根据First对称着放,感性理解一下一定是First win
AC Code
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read(){ char c=getchar(); int x=0,f=1; while(c<‘0‘||c>‘9‘){ if(c==‘-‘)f=-1; c=getchar(); } while(c>=‘0‘&&c<=‘9‘){ x=x*10+c-‘0‘; c=getchar(); } return x*f; } int a,b,r; int main(){ a=read(); b=read(); r=read(); if(2*r<=a&&2*r<=b)cout<<"First"<<endl,exit(0); else return cout<<"Second"<<endl,0; }
以上是关于CF197A Plate Game的主要内容,如果未能解决你的问题,请参考以下文章