zoukankan      html  css  js  c++  java
  • D. 3-Coloring

    很有意思的交互题

    给定n*n的棋盘,有三个数123可供选择填,要求是任意格子的上下左右不能和本格相同。

    每次给一个数,要求本次填写不能用该数。

    考虑到两个数字的符合情况的解

      1  2  1  2

      2  1  2  1

      1  2  1  2

      2  1  2  1

    那么结论就是

    不让我们用1,我们就填2

    不让我们用2,我们就填1

    不让我们用3,啊,那不用就不用嘛。

    这样肯定是符合条件的,对吧。

    这时候就有一个问题了 不让我们用1,我们就填2,可是2的所有位置都填满了怎么办

    那就在1的位置上填3,填满的2已经帮我们阻隔了所有1位置。

    同理,不让我们用2,我们就填1,1位置填满了咋办,在2的位置上填3就好了

    vector<pair<int,int>>v[5];
    void print(int col,pair<int,int> x){
        cout<<col<<" "<<x.first<<" "<<x.second<<endl;
    }
    void solve(){
        cin>>n;
        for(int i=1;i<=n;++i){
            for(int j=1;j<=n;++j){
                v[(i+j)%2].push_back({i,j});
            }
        }
        for(int i=1;i<=n*n;++i){
            int x;cin>>x;
            if(x==1){
                if(v[1].size()){
                    print(2,v[1].back());
                    v[1].pop_back();
                }
                else{
                    print(3,v[0].back());
                    v[0].pop_back();
                }
            }
            else if(x==2){
                if(v[0].size()){
                    print(1,v[0].back());
                    v[0].pop_back();
                }
                else{
                    print(3,v[1].back());
                    v[1].pop_back();
                }
            }
            else{
                if(v[0].size()){
                    print(1,v[0].back());
                    v[0].pop_back();
                }
                else{
                    print(2,v[1].back());
                    v[1].pop_back();
                }
            }
        }
    }
  • 相关阅读:
    如何在CentOS 7中安装最新Git(源码安装)
    centos7安装Lua
    syslog-ng 学习
    syslog-ng内容讲解
    java框架篇---spring IOC 实现原理
    java 过滤器filter使用案例
    jsp-TagLib标签库
    阿里服务器+Centos7.4+Tomcat+JDK部署
    IntelliJ IDEA上创建maven Spring MVC项目
    ServiceStack.Redis之IRedisClient
  • 原文地址:https://www.cnblogs.com/PdrEam/p/14746739.html
Copyright © 2011-2022 走看看