CF989C

link

一道奇怪的构造题。还以为比较困难,结果解法十分简单粗暴。kang完题解直呼咋这么暴力啊。

就很朴素的想法。假如每个元素都只有一个连通块,那很简单,直接输出四个大大的方阵即可。但很明显出题人没有这么善良,那么我们需要做的就是去其它地方挖出一些连通块来。最简单的方法就是隔一个方块挖一个连通块,这样就可以随心所欲制造给定数量的连通块;但同时我们也不希望破坏原有的连通块,所以在此基础上来一行完整的背景颜色把支离破碎的原来颜色的方块串联起来就可以了。

代码异常简洁。

#include<bits/stdc++.h>
//#define zczc
const int N=50;
using namespace std;
inline void read(int &wh){
    wh=0;int f=1;char w=getchar();
    while(w<'0'||w>'9'){if(w=='-')f=-1;w=getchar();}
    while(w<='9'&&w>='0'){wh=wh*10+w-'0';w=getchar();}
    wh*=f;return;
}

signed main(){
	
	#ifdef zczc
	freopen("in.txt","r",stdin);
	#endif
	
	int a[4];
	for(int i=0;i<4;i++)read(a[i]);
	printf("40 50\n");
	for(int i=1;i<=40;i++){
		int l=(i-1)/10;int r=(l+1)%4;
		for(int j=1;j<=N;j++){
			if(i%2==1||j%2==1||a[r]==1)putchar('A'+l);
			else putchar('A'+r),a[r]--;
		}
		putchar('\n');
	}
	
	return 0;
}
posted @ 2022-07-03 21:59  Feyn618  阅读(55)  评论(0编辑  收藏  举报