zoukankan      html  css  js  c++  java
  • 【P2361】yyy棋(博弈论+贪心+模拟)

    这个题看上去本来不好处理,然而善意的题面已经基本告诉你做法了,小时候玩的那个游戏就是代码的核心。动动脑子想想,如果长和宽的积是奇数,那么一定要先手,如果是偶数,那么后手就会获胜。

    好了,那么怎么处理对称情况呢,随便画一个小棋盘试一试,很容易得出是x-i+1和m-y+1。这之后就是颜色的问题了,因为题目有颜色的限制和对方耍赖这一操作,所以我们每一次放棋子的颜色也有要求。

    再画一个小棋盘模拟一下,容易得出是偶数时要放不一样的,奇数时放一样的。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define re register
    #define wc 0.0000000001
    using namespace std;
    int n,m,map[11][11],t,x,a[100001],y,c,cc;
    int main()
    {
        cin>>n>>m;
        memset(map,0,sizeof(map));
        if(n*m%2==1)
        {
            cout<<"First"<<endl<<n/2+1<<" "<<m/2+1<<" "<<1<<endl;
            map[n/2+1][m/2+1]=1;
            while(cin>>x>>y>>c)
            {
                if(c==0)
                cc=-1;
                else
                cc=1;
                if(x+1<=n&&map[x+1][y]==cc||x-1>0&&map[x-1][y]==cc||y+1<=m&&map[x][y+1]==cc||y-1>0&&map[x][y-1]==cc)
                {
                    cout<<"Buwanle";
                    return 0;
                }
                map[x][y]=cc;
                cout<<n-x+1<<" "<<m-y+1<<" "<<c<<endl;
                map[n-x+1][m-y+1]=cc;
            }
        }else
        {
            cout<<"Second"<<endl; 
            while(cin>>x>>y>>c)
            {
                if(c==0)
                cc=-1;
                else
                cc=1;
                if(x+1<=n&&map[x+1][y]==cc||x-1>0&&map[x-1][y]==cc||y+1<=m&&map[x][y+1]==cc||y-1>0&&map[x][y-1]==cc)
                {
                    cout<<"Buwanle";
                    return 0;
                }
                map[x][y]=cc;
                cout<<n-x+1<<" "<<m-y+1<<" "<<(c^1)<<endl;
                map[n-x+1][m-y+1]=cc*(-1);
            }
        }
    }
  • 相关阅读:
    mq概念
    Mac Xampp 安装redis 及 安装php-redis扩展
    rabbitmq死信队列(延迟队列)demo
    rabbitmq生产与消费测试
    RabbitMQ各方法详解
    Mac git old mode 100644 new mode 100755 mac目录权限问题
    mac安装redis
    msql创建用户并授权
    mac apache php 访问失败
    Kubernetes入门学习--在Ubuntu16.0.4安装配置Minikube
  • 原文地址:https://www.cnblogs.com/victorique/p/8426803.html
Copyright © 2011-2022 走看看