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;
	}
}

  

猜你喜欢

转载自www.cnblogs.com/033000-/p/12323299.html
今日推荐