喜びと美濃叫ぶ「私は、かつてここにきた」、「それは息を呑むほど驚くべきことです。」
「それが好きとは何ですか?」
「ルックは、菅野は、あなたがあなたの絵筆を持っている、と私は私の言葉を持っている。試してみる、我々うか」
木材、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;
}