Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Beginner Contest 213

5完1TLE。

各問題

A - Bitwise Exclusive Or

A xor C = B のとき A xor B = C が成り立つので、A xor Bを出力すればよいです。

B - Booby Prize

スコアと番号をひとまとめにして(c++ならpairにすればよい)ソートして、大きい方から二番目の番号を答えます。

C - Reorder Cards

一言でいうと、座圧をします。以上です。

具体的にはA, Bそれぞれ出現した座標をsetで保持しておいて、小さい方から番号を振り直し、各A, Bについて振り直した番号を当てはめていくということをします。

D - Takahashi Tour

木上のDFSをすればよくて、進むべき点の選び方と到達した点の保存の仕方だけに注意をすればよいです。

E - Stronger Takahashi

街をグラフとして構築します。

具体的には、(i, j) から (i, j + 1) に移動するとき、(i, j + 1) が道ならそのまま進めるのでコスト0の辺を貼ります。 塀なら (i, j + 1) にコスト1の辺を貼ることに加えて、 2x2の区画を一気に平坦にすることができることから、(i - 1, j + 1), (i + 1, j + 1) (i, j + 2), (i - 1, j + 2), (i + 1, j + 2) にもコスト1の辺を貼ることができます。これを4方向に対して行います。

あとは構築したグラフに対してダイクストラを回せば終わりです。

ところで最初0-1BFSを選択したんですけどTLEしてしまいました。辺が多すぎたのか?それともなにかバグっていたのか?

F - Common Prefixes

とりあえず z_algorithm を回してみるとそれっぽい値が垣間見えたのですが、いちいち回していたら時間がいくらあっても足りないしどうすんだこれ?と思ってるうちにコンテストが終了していました。

以降

見てません。

まとめ

Dまでかなり早く解けたっぽいのに、Eで解法が見えてるのに実装でもたもたしたのがちょっと残念ですが、青近くまでパフォが出たのでまあいいかなーといったところです。

f:id:mdstoy:20210808230825p:plain