パナソニックグループプログラミングコンテスト2022(AtCoder Beginner Contest 273)
まとめ
A, B, C, D が解けてそこそこ満足の結果です。
全体的に問題が面白いな〜と感じました。B, D, E問題が好きです。
A - A Recursive Function
A問題で再帰関数の実装を推奨するタイプの問題が出ました。
前もあったかもしれない。
B - Broken Rounding
小さい桁から順に、K桁目まで四捨五入をするという問題です。
10で割り、余りが5以上なら +1 することを繰り返し、最後に$ 10^Kを掛ける感じの実装をしました。
C - (K+1)-th Largest Number
問題文を読み解くのに少し時間がかかりました。
言い換えると「並び替えて k 番目に位置する数の個数を答えよ」みたいな問題になりそう。
数の登場回数をカウントしておいて、その数がソートして何番目なのかが分かれば良いです。
D - LRUD Instructions
実装が重たい類の問題です。左右上下の分岐を頑張って書きましょう。
重実装問題が早く解けるとそれだけで結構美味しいです。
壁の表現ですが、グリッドサイズが巨大なので二次元配列は使えません。「列ごと」「行ごと」に存在する壁の座標を SortedSet 的な集合で必要な分だけ管理しておくと良いです。
グリッドの有効範囲を超える移動については、移動後に$ 1 \leqq R \leqq H, 1 \leqq C \leqq Wとなるように補正すると楽です。番兵を置こうとするとそれだけでTLEです。
E - Notebook
面白そうな問題です!が、解けませんでした・・
git のブランチのようなグラフ構造を作ればいけるか?と思って色々実装をしましたが、時間内では形になる気がせず。
この問題は解けるようになっておきたいので復習頑張ろう。
F - Hammer 2
問題文を見ただけ。解けそうな印象がするなあ、と思いましたがE問題が面白そうだったのでそちらに執着しました。