Toy と帽子と ADP BE

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

キーエンスプログラミングコンテスト2022(AtCoder Beginner Contest 274)

4完

各問題

A - Batting Average

cout << fixed << setprecision(3) << B / A << endl;

B - Line Sensor

二重ループを書いて行ごとに集計するだけです。

C - Ameba

長さ 2N + 2 (0オリジンなので) の配列 ans を作り、ans[1] = 1 として、子の世代は親の世代よりひとつ大きいので ans[2 * i] = ans[A[i]] + 1 および ans[2 * i] = ans[A[i]] + 1 を繰り返していくだけです。

D - Robot Arms 2

90度ずつ曲がるという制約から、奇数番目はx軸方向に(1番目に限り正方向のみ)、偶数番目はy軸方向に移動します。

それを考慮に入れて、到達可能な座標をDPで求めればよいです。負方向への移動もあるので、原点座標には下駄を履かせる必要があります。

DPが思いつかないとパニックになるけどDPで解けといわれたら瞬殺できる系の問題(自分的に)。

E - Booster

愚直に解くととんでもない計算量になるので、なにがしか分割したりする(街と宝箱をわけて考えてあとでマージするとか?)を考えてましたが、それでも現実的な計算量になる気がせず、全く手がつかずじまいでした。

企業コンで強い人もたくさん出ている中でも通した人数が伸びなかったので、自分に解けるレベルの問題でもないのかなと...。

いや、公式解説見たら全然そうでもなかった...。bitDPかなるほど。

まとめ

Dまでほぼ詰まらずに解けたので、まあまあいいパフォーマンスでした。いやでもbitDPはせめて思いつかなきゃだめじゃん?