蛍光のCodeforces-989C C. Aミスト - CFを考える連絡先

セットを訓練ACM思考の質問

蛍光のC. Aミスト
テストあたりの時間制限
1秒
テストごとのメモリ制限
256メガバイト
入力
標準入力
出力
標準出力
川下りボートドリフト、川岸にアップ花のショーの完全な木材として。

喜びと美濃叫ぶ「私は、かつてここにきた」、「それは息を呑むほど驚くべきことです。」

「それが好きとは何ですか?」

「ルックは、菅野は、あなたがあなたの絵筆を持っている、と私は私の言葉を持っている。試してみる、我々うか」

木材、Amaranths、ベゴニア、CentaureasとDianthuses花の4種類があります。

木材は、行および$$$ M $$$列$$$ N $$$の矩形グリッドで表すことができます。グリッドの各セルには、花の1つだけの型があります。

みのによれば、花の種類ごとによって形成された連結成分の数は$$$ $$$、$$$ B $$$、$$$ C $$$と$$$ D $$$それぞれ。二つのセルは、パスがセル間の移動は、共通のエッジを共有することは、それらの間に存在すると、同じ花を含む細胞を通過場合にのみ、同じ連結成分に考慮されます。

あなたは助けに菅野は$$$ N $$$ $$$ $$$および任意の下に与えられた制約の下で選ばれたメートルで、花のようにグリッドを描くです。少なくとも一つの解決策は、この問題の制約の下で存在することを示すことができます。

あなたは、任意の$$$を選ぶN $$$と$$$ $$$メートル以下の制約の下で、それらが入力に与えられていないことに注意してください。

入力

入力の最初で唯一のラインは、4つのスペースで区切られた整数$$$ $$$、$$$ B $$$、$$$ C $$$と$$$ D $$$($$$ 1 \当量を含有しますA、B、C、D \当量100 $$$) - それぞれAmaranths、ベゴニア、CentaureasとDianthusesの連結成分の必要数。

出力

行数と数 - 最初の行、出力2スペースで区切られた整数N $$$ $$$と$$$ M $$$($$$ 1 \当量のN、M \ 50当量$$$)でそれぞれグリッド内の列の。

その後、出力$$$ N $$$線各グリッドの行を表す、$$$ M $$$連続英文字からなります。各文字は'の間であるべきであるA '、 ' B '、 ' C 'と' D 'を表すAmaranths、それぞれベゴニア、Centaureas及びDianthuses、。

場合複数のソリューションがあり、いずれかを印刷してください。あなたはどちらの場合(上部または下部)での出力の各文字をすることができます。

入力
コピー
5 3 2 1
出力
コピー
4 7 
DDDDDDD
DABACAD
DBABACD
DDDDDDD
入力
コピー
50 50 1 1
出力
コピー
4 50 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
ABABABABABABABABABABABABABABABABABABABABABABABABAB
BABABABABABABABABABABABABABABABABABABABABABABABABA
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
入力
コピー
1 6 5
出力
コピー
7 7 
DDDDDDD
DDDBDBD
DDCDCDD
DBDADBD
DDCDCDD
DBDBDDD
DDDDDDD
注意

全てDianthuses一つを形成しつつ、第1の例では、Amaranths、ベゴニアおよびCentaureasの各セルは、連結成分を形成します。

吸盤の建設問題、私はゴミだった
ここに画像を挿入説明
少し、その後、4色で塗装4つに。

#include <bits/stdc++.h>
using namespace std;
template <typename t>
void read(t &x)
{
    char ch = getchar();
    x = 0;
    t f = 1;
    while (ch < '0' || ch > '9')
        f = (ch == '-' ? -1 : f), ch = getchar();
    while (ch >= '0' && ch <= '9')
        x = x * 10 + ch - '0', ch = getchar();
    x *= f;
}

#define wi(n) printf("%d ", n)
#define wl(n) printf("%lld ", n)
#define rep(m, n, i) for (int i = m; i < n; ++i)
#define rrep(m, n, i) for (int i = m; i > n; --i)
#define P puts(" ")
typedef long long ll;
#define MOD 1000000007
#define mp(a, b) make_pair(a, b)
#define N 1005
#define fil(a, n) rep(0, n, i) read(a[i])
//---------------https://lunatic.blog.csdn.net/-------------------//

int mapp[100][100];
int a[5];

int main()
{
    memset(mapp, 0, sizeof(mapp));
    for (int i = 1; i <= 4; i++)
    {
        scanf("%d", &a[i]);
        a[i]--;
    }
    int p = 2;
    int q = 2;
    for (int i = 1; i <= a[1]; i++)
    {
        mapp[p][q] = 1;
        p += 2;
        if (p > 24)
        {
            p = 2;
            q += 2;
        }
    }
    p = 27;
    q = 2;
    for (int i = 1; i <= a[2]; i++)
    {
        mapp[p][q] = 2;
        p += 2;
        if (p > 49)
        {
            p = 27;
            q += 2;
        }
    }
    p = 2;
    q = 27;
    for (int i = 1; i <= a[3]; i++)
    {
        mapp[p][q] = 3;
        p += 2;
        if (p > 24)
        {
            p = 2;
            q += 2;
        }
    }
    p = 27;
    q = 27;
    for (int i = 1; i <= a[4]; i++)
    {
        //cout<<"p="<<p<<" q="<<q<<endl;
        mapp[p][q] = 4;
        p += 2;
        if (p > 49)
        {
            p = 27;
            q += 2;
        }
    }
    cout << "50 50" << endl;
    for (int i = 1; i <= 50; i++)
    {
        for (int j = 1; j <= 50; j++)
        {
            if (mapp[i][j] == 1 || mapp[i][j] == 0 && i >= 26 && j >= 26)
                cout << 'A';
            else if (mapp[i][j] == 2 || mapp[i][j] == 0 && i <= 25 && j >= 26)
                cout << 'B';
            else if (mapp[i][j] == 3 || mapp[i][j] == 0 && i >= 26 && j <= 25)
                cout << 'C';
            else
                cout << 'D';
        }
        cout << endl;
    }
    return 0;
}
公開された612元の記事 ウォンの賞賛282 ・は 50000 +を見て

おすすめ

転載: blog.csdn.net/weixin_43627118/article/details/104581898