https://atcoder.jp/contests/kupc2019/tasks/kupc2019_g
ジャンル
解説
https://atcoder.jp/contests/kupc2019/submissions/7962102
そういう作り方の構築は初めて見たかもしれない。
最小は4×4なので、とりあえずこれから作ってみるが、もう作ってある。
だが、大体、サンプルは規則性を隠ぺいして作ってあるので、規則的を目指して自分でも構築する。
ABCA BCAB CABC ABCA
ここから横に1つ伸ばす
ABCA? BCAB? CABC? ABCA?
ここには横と同じものを書けばいい
ABCAA BCABB CABCC ABCAA
すると各ペア2つだけ増える。
縦に1つ伸ばす。
ABCAA BCABB CABCC ABCAA ?????
これも横と同じものを書けばいい。
ABCAA BCABB CABCC ABCAA ABCAA
これも各ペア2つずつ増える。
これを繰り返していくのだが、最終的には
ABCAAAA BCABBBB CABCCCC ABCAAAA ABCAAAA ABCAAAA ABCAAAA
こんな感じのやつを構築すれば答え。
インクリメンタルに作ってく感じは初めてかもー。
int N, H, W; //--------------------------------------------------------------------------------------------------- void solve() { vector<string> ans(4); ans[0] = "ABCA"; ans[1] = "BCAB"; ans[2] = "CABC"; ans[3] = "ABCA"; rep(y, 0, 4) { rep(x, 0, W - 4) { ans[y] += ans[y][3]; } } rep(y, 0, 4) printf("%s\n", ans[y].c_str()); rep(y, 0, H - 4) printf("%s\n", ans[3].c_str()); } //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) { cin >> H >> W; solve(); } }