• CF197A Plate Game


    题目描述

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

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

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

    输入输出样例

    输入 #1
    5 5 2
    输出 #1
    First
    输入 #2
    6 7 4
    输出 #1
    Second

    解题思路

    简单的博弈论

    我们的策略是,若First能放,则我们后面根据Second对称着放,感性理解一下一定是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;
    }
    View Code
  • 相关阅读:
    函数的四种调用模式.上下文调用.call.apply
    caller.arguments.callee.eval
    面向对象相关知识总结
    javascript与jQuery的each,map回调函数参数顺序问题
    HTML5自定义属性的设置与获取
    [bzoj1911][Apio2010]特别行动队
    [学习笔记]乘法逆元
    [日常训练]普通计算姬
    [学习笔记]线性筛
    [学习笔记]数论(一)
  • 原文地址:https://www.cnblogs.com/Larry-Zero/p/11739797.html
Copyright © 2020-2023  润新知