トヨタ自動車プログラミングコンテスト2023#4(AtCoder Beginner Contest 311)参加記

2023/7/22に開催された、トヨタ自動車プログラミングコンテスト2023#4(AtCoder Beginner Contest 311)に参加しました。

atcoder.jp

前回なんとか水パフォを獲得し、レートのほうも着々と入水に近づいてきました。

今回も水パフォを獲得して、入水に近づこうという気持ちで挑みます。

今回の結果

今回は、なんと3完で終了。。

ABC311結果
ABC311結果

大分爆死したかと思いましたが、なんとか緑パフォには乗ってくれたようです。結構下げはしましたが、まあ致命傷には至らずという感じ。。

振り返り

今回は、大分問題の意図をとらえ損ねた感があります。

ABC311提出結果
ABC311提出結果

A問題

A - First ABC

シンプルに実装する方法があるかもしれないが、AC優先で愚直に解くことにする。

Sを愚直に前から見て、A, B,Cそれぞれがすでに現れたかを管理しておき、全部現れた箇所を答えとする。

2分23秒で1完。

提出コード

https://atcoder.jp/contests/abc311/submissions/43828465

B問題

B - Vacation Together

全行に対して、i列目の値がoであるかを確認する。あとは、該当する列がどれだけ連続するかを計算する。

6分4秒で2完。個人的には、ちょい早いタイムでした。

提出コード

https://atcoder.jp/contests/abc311/submissions/43833790

C問題

C - Find it!

Cからいきなり難易度が跳ね上がった感じ??

とりあえず、制約の中で閉路が1つあるのは分かるが、少なくとも、どの頂点が閉路に属するのかを先に知りたいような気がする。。

ということで、当初はUnion-Findを使って閉路検出をしようかと思いましたが、よくよく考えてみて、強連結成分分解のライブラリを使ったほうがよいか思い方針転換。

C問題にしては、大分難しめの実装かなあと思いましたが、とりあえずSCCを通して、強連結成分成分をそのまま出力する方向で実装。が、、これだと頂点が連結順に並んでなかったかWAを喰らいました。。

頂点を連結順に並び替えることでなんとかAC。26分20秒1ペナで3完です。

提出コード

https://atcoder.jp/contests/abc311/submissions/43848368

D問題

D - Grid Ice Floor

この問題は、誤読でやらかした問題。

当初、プレイヤーが最適の移動方法をとった場合、最大何マス通ることが出来るかを答える問題と思ったため、BFSをどこで打ち切るべきか、プレイヤー毎の情報をどこまで保持しておくべきかが分からずでした。

とりあえず、プレイヤーが通ったマスとその向きを全てプレイヤー毎に保持する方針で実装してみようとするものの、上手くいかず。結局、この問題で大分時間を費やした挙句、解き切る事が出来ずでした。。

コンテスト後、公式解説を見て、やっと自分の誤読に気付く始末。まあ、これは問題を良く読みましょうということで再発防止するしかないのでしょうかねえ。

E問題

E - Defect-free Squares

D問題がよくわからんので、問題文ぐらいはチラ見したものの、結局よくわからずでした。

F問題

F - Yet Another Grid Task

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

G問題

G - One More Grid Task

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

Ex問題

Ex - Many Illumination Plans

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

これまでの実績

今回は下げという結果。また入水が遠のきました。

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

総括

今回は、誤読でやらかすというミスもありましたが、E問題でリカバリできなかったのも敗因かと考えます。

安定して高パフォーマンスを取るには、1ミスしても別問題でリカバリできる実力をつけていかないとダメですね。入水に向けて、もっと青Diffぐらいの問題までは挑戦できるように実力をつけていきたいと思います。

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