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;
}
菜菜灵巧の菜菜代码QAQ

等我调出来了再回来repo哪儿出问题了QAQ

猜你喜欢

转载自www.cnblogs.com/lqsukida/p/10293198.html
今日推荐