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; }
其实这么短的代码应该也没人要吧……
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号