CF989C A Mist of Florescence 构造
正解:构造
解题报告:
先放传送门yep!
然后构造题我就都直接港正解了QwQ没什么可扯的QwQ
这题的话,首先这么想吼
如果我现在构造的是个4*4的
举个栗子
AABB
ACBB
AADB
DBCA
显然我可以让它变成5*5的
就这样
AABBB
ACBBB
AADBB
DBCAA
DBCAA
也显然能让它再变成6*6的
AABBBB
ACBBBB
AADBBB
DBCAAA
DBCAAA
DBCAAA
好滴那这个时候就应该已经有点get到了484!
就是说,如果我能用小于50*50的构造出来的,我一定就能用50*50构出来
那那那那就不用白不用嘛×
所以就先构个50*50的格子呗
初始化就先平均分掉,就每个字母占25*25
然后以A为例
我每需要一个A,就往全是B的那个块儿丢一个A
然后就完成辽,,,
是不是听起来很简单的样子,,,
我也jio得很简单的样子,,,
但是我就是WA了,,,而且我用它告诉我我错了的数据测我也没测出来我WA在哪儿,,,就很难受,,,,哭了,,,,
不管不管先放个代码QAQ
#include<bits/stdc++.h> using namespace std; #define ll long long #define rp(i,x,y) for(register ll i=x;i<=y;++i) int a,b,c,d,h,l; char ch[60][60]; inline ll read() { char ch=getchar();ll x=0;bool y=1; while(ch!='-' && (ch>'9' || ch<'0'))ch=getchar(); if(ch=='-')ch=getchar(),y=0; while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=getchar(); return y?x:-x; } int main() { a=read()-1;b=read()-1;c=read()-1;d=read()-1; printf("50 50\n"); rp(i,1,25) rp(j,1,25)ch[i][j]='A'; rp(i,1,25) rp(j,26,50)ch[i][j]='B'; rp(i,26,50) rp(j,1,25)ch[i][j]='C'; rp(i,26,50) rp(j,26,50)ch[i][j]='D'; h=1;l=0; while(b--) { l+=2;if(l>25)l=2,++h; ch[h][l]='B'; } h=1;l=24; while(c--) { l+=2;if(l>50)l=26,++h; ch[h][l]='C'; } h=26;l=0; while(d--) { l+=2;if(l>25)l=2,++h; ch[h][l]='D'; } h=26;l=24; while(a--) { l+=2;if(l>50)l=26,++h; ch[h][l]='A'; } rp(i,1,50) { rp(j,1,50)printf("%c",ch[i][j]); printf("\n"); } return 0; }
等我调出来了再回来repo哪儿出问题了QAQ