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

2022/10/22に開催された、キーエンスプログラミングコンテスト2022(AtCoder Beginner Contest 274)に参加しました。

atcoder.jp

先週のARCで惨敗してしまったので、今週はなんとか巻き返しを図りたいところ。

とりあえず今回は、なんとかレートが上がればよいかという感じで挑むこととしました。

今回の結果

3完で終了という残念な結果になりました。。。

ABC274結果
ABC274結果

パフォーマンスは、やっとこさ緑という有様。レートを大きく落としてしまい、1100台をもう少しで切るところまできてしまいました。

振り返り

D問題とE問題で、ひどい誤読をやらかしてしまいました。。

ABC274提出結果
ABC274提出結果

A問題

A - Batting Average

計算した打率を小数点第4位で四捨五入した結果を表示せよという問題。

普通にdoubleで計算すると、何か罠にハマりそうな予感がする。よって、JavaではBigDecimalを使うのが定跡。

最近、このクラスをつかったことがなかったので、一応使い方をググって実装。少し調査時間がかかったものの、なんとかACが取れました。

4分46秒で1完。A問題にしては、少し時間かけすぎかも。。

提出コード

https://atcoder.jp/contests/abc274/submissions/35865539

B問題

B - Line Sensor

あまりにもシンプルな問題だなという印象。いわゆるFor文の練習問題。

W列分のカウント用配列を用意し、2重ループ内で'#'が存在する列をカウントアップしていけば良い。

ということで、あとは実装して問題なくACが取れましたとさ。

8分36秒で2完。

提出コード

https://atcoder.jp/contests/abc274/submissions/35869412

C問題

C - Ameba

まず、方針として解答出力用の配列ansを用意する。ans_iの値を、アメーバ1から数えて何世代目かという値にする。

次に、今アメーバが何番まで居るかという情報xを持っておく。

あとは、配列AをFor文で回し、ans_{x+1}=ans_{A_i} + 1, ans_{x+2} = ans_{A_i} + 1といった要領で配列を更新していけばよい。

ということで、あとは実装して問題なくACが取れましたとさ。

21分24秒で3完。ここまでは、なんとかいい感じにきました。

提出コード

https://atcoder.jp/contests/abc274/submissions/35876744

D問題

D - Robot Arms 2

この問題では、大きな誤読をやらかしてしまい、方針が全く立たなくなってしまいました。。

当初、読解した内容として、点p_iと点p_{i + 1}の距離がA_iというところまでしか理解できておらず、配列Aの位置の偶奇によって、x座標またはy座標に作用するというところを完全に見落としてしまいました。

ということで、各A_iについて、上下左右の移動方法を自由に決めて、最終的に(x,y)に到達できるかという、まったく見当違いの内容を考える羽目に。。

で、この問題が解けるはずもなく。残り時間40分を切ったあたりで一旦Dからは撤退。E問題に取り組むことにしました。。

E問題

E - Booster

なんか、見た感じ巡回セールスマン問題の応用版という感じがする。

が、、詳細をみると、宝箱を取ったりすることで、移動速度が変化したりなど、いろいろな追加実装が必要な模様。。

bitDPをする際に、上位のビットを宝箱として扱い、下位のビットを街として扱うか、この時に、全ての街を探索したことをどうやって判定するかなど、考慮が必要な部分が多く、だいぶ実装に時間が必要でした。

で、やっとこさ、それなりの実装ができたのでテストしてみるが、サンプルが何も通らず。。

それもその筈。2点間の距離について、問題ではユーグリット距離で計算すべきところ、確認不足でマンハッタン距離で計算していたり、原点をスタートとすべきところ、街1からスタートする前提でプログラムを組んでたりと、散々な有様。。

これらを修正する時間は残っておらず、残念ながら時間切れとなってしまいました。。

F問題

F - Fishing

問題すら見れておりません。

G問題

G - Security Camera 3

問題すら見れておりません。

Ex問題

Ex - XOR Sum of Arrays

問題すら見れておりません。

これまでの実績

3連敗で、さらに水色が遠のいてしまいました。

コンテスト実績
コンテスト実績

総括

今回は、問題文の誤読がひどく、反省しきりの回となりました。

問題が正確に読めていれば、いずれもある程度の方針は立てられていた筈。次回以降は、まず問題文を読み込むという基本をしっかりと行うようにしていきます。

ということで、また次回も頑張ります。