Codeforces 989C A Mist of Florescence 构造
Posted zhenghanghu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 989C A Mist of Florescence 构造相关的知识,希望对你有一定的参考价值。
第二次做构造题,感觉好做不好想啊。
在游戏里面如果你得到一个狗粮罐头,那就一定会有一个关卡你需要使用掉狗粮罐头;但这题里面说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 构造的主要内容,如果未能解决你的问题,请参考以下文章
CF989C A Mist of Florescence 构造 思维好题 第八题
CF989C A Mist of Florescence (构造)
Codeforces A Mist of Florescence
Codeforces Round #487 (Div. 2) A Mist of Florescence (暴力构造)