码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 989C A Mist of Florescence 【构造】

时间:2018-06-15 15:53:53      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:color   bre   ==   ios   else   连通   ||   enc   有一个   

第二次做构造题,感觉好做不好想啊。

在游戏里面如果你得到一个狗粮罐头,那就一定会有一个关卡你需要使用掉狗粮罐头;但这题里面说n和m不固定,但实际上我们大胆的说n=40,m=50的情况下一定能构造出目标图。

先把n=1-10填满a,11-20填满b,21-30填满c,31-40填满d

然后a里面放b-1个B联通分量,b里面放c-1个C连通分量,c里面放d-1个D连通分量,d里面放a-1个A连通分量。

#include<iostream>
using namespace std;
char g[41][51];//40*50的格子 

int main()
{
    int a,b,c,d; cin>>a>>b>>c>>d;
    a--; b--; c--; d--;
    
       for(int i=1;i<=40;i++){
           for(int j=1;j<=50;j++){
               if(i/10==0 || i==10) g[i][j]=A; 
               else if(i/10==1 || i==20) g[i][j]=B;
               else if(i/10==2 || i==30) g[i][j]=C;
               else g[i][j]=D;
           //    cout<<i<<" "<<j<<" "<<g[i][j]<<endl;
        }
    } 

    //a里面放b,b里面放c,c里面放d,d里面放a
    for(int i=1;i<=10;i+=2){
        if(b==0) break;
        for(int j=1;j<=50;j+=2){
            g[i][j]=B;
            b--;
            if(b==0) break;
        }
    } 
    
    for(int i=11;i<=20;i+=2){
        if(c==0) break;
        for(int j=1;j<=50;j+=2){
            g[i][j]=C;
            c--;
            if(c==0) break;
        }
    } 
    
    for(int i=21;i<=30;i+=2){
        if(d==0) break;
        for(int j=1;j<=50;j+=2){
            g[i][j]=D;
            d--;
            if(d==0) break;
        }
    } 
    
    for(int i=31;i<=40;i+=2){
        if(a==0) break;
        for(int j=1;j<=50;j+=2){
            g[i][j]=A;
            a--;
            if(a==0) break;
        }
    }
    
    cout<<40<<" "<<50<<endl;
    for(int i=1;i<=40;i++){
        for(int j=1;j<=50;j++) cout<<g[i][j];
        cout<<endl;
    }
    
    return 0;
}

 

Codeforces 989C A Mist of Florescence 【构造】

标签:color   bre   ==   ios   else   连通   ||   enc   有一个   

原文地址:https://www.cnblogs.com/ZhenghangHu/p/9186825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!