cf 989C

构造一个网格图使得四种类型的联通分量分别有a,b,c,d

看图就知道应该如何去构造了
int gird[maxn][maxn];
int main(){
int a[4];
for(int i=0;i<4;i++)
cin>>a[i],--a[i];
int n = 40, m= 50;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
gird[i][j]=(i-1)/10;
}
}
for(int i=0;i<4;i++){
int nx=(i+1)%4;
if(!a[nx]) continue;
int u=i*10+2;
int d=(i+1)*10-1;
for(int j=u;j<=d && a[nx];j+=2){
for(int k=1;k<=m && a[nx];k+=2){
gird[j][k]=nx;
a[nx]--;
}
}
}
cout<<n<<' '<<m<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout<<char('A'+gird[i][j]);
cout<<endl;
}
}
浙公网安备 33010602011771号