はまやんはまやんはまやん

hamayanhamayan's blog

ABCのG問題 [Kyoto University Programming Contest 2019 G]

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();
    }
}