freee プログラミングコンテスト2022(AtCoder Beginner Contest 264)参加記

2022/8/13に開催された、freee プログラミングコンテスト2022(AtCoder Beginner Contest 264)に参加しました。

atcoder.jp

ここ最近のコンテストでは、なんとかレート以上のパフォーマンスが出せているものの、小ミスが多くてパフォーマンスを下げるという展開が続いています。

今回こそは、その辺りの反省を踏まえて、最低水パフォといういつもの目標で臨むこととしました。

今回の結果

で、今回はABDEの4完という、なんとも微妙な結果で終了しました。

ABC264結果
ABC264結果

それでも、パフォーマンスは、なんとか水色まで出てくれまして、なんとかレート上昇。一応Highest更新のおまけ付きでの勝ちという結果になりました。

振り返り

C問題での、しょうもないミスで大きく時間をロスしてしまいました。

ABC264提出結果
ABC264提出結果

A問題

A - "atcoder".substr()

簡単な文字列操作の問題。JavaではStringクラスのsubstringメソッドを使えば良い。

ということで、あとはやるだけの実装をして提出。問題なくACが取れました。

1分19秒で1完。ここ数回のABCでは早い方のタイムでした。

提出コード

https://atcoder.jp/contests/abc264/submissions/33985009

B問題

B - Nice Grid

問題を見て、なんらかの法則性がないかを考えてみたが、すぐには思いつかず。。

仕方ないので、ゴリ押しでACを取るため、15 \times 15のグリッドの情報を文字列で直書きする方針で実装。

実装時間がやたらとかかってしまい、また直書き部分のところにミスが無いか大分心配でしたが、なんとか一度の提出でACが取れました。

9分5秒で2完。コンテスト後のTLを見てると、結構ゴリ押し実装でやった人が多かったようですね(笑)

提出コード

https://atcoder.jp/contests/abc264/submissions/33992390

C問題

C - Matrix Reducing

一読して、Cにしては、やたらと難しい問題かと思ったが、制約などを見て、削除する行と列のパターンを全探索するやつだという印象を持った。

ということで、bit全探索の要領で実装。なんとかサンプルまでは通すことが出来たので、提出したら、これがREとWAのダブルパンチ。。。

そこから、WAはともかくREの原因がさっぱり分からず。ローカルでいろんなパターンをテストしてみるものの、原因の手がかりすら掴めずで、時間がどんどん溶けていくばかり。。

都合2回目の提出でWAを喰らったところで、この問題は一度撤退して、後のD以降に賭けてみることにしました。

で、結局この問題は最後まで解けずでしたが、あとでよくよくソースを見てみると、ループのところで致命的なバグがあったことが判明!

また、つまらないミスでパフォーマンスを下げたというオチでした。うーん、ミスが治らないねえ。。

D問題

D - "redocta".swap(i,i+1)

これ、転倒数を求めるやつだと瞬時にわかった。

転倒数を求めるライブラリなどは、まだ用意していなかったが、要素数も少ないので、単純計算で求めることは可能。

ということで、あとは愚直に転倒数を求める実装をして提出。サクッとACが取れましたとさ。

Cで手こずったこともありましたが、B、C問題より軽く解けたので、少し拍子抜けしました。

55分47秒で3完。あとは、E問題に賭けてみるのみ。

提出コード

https://atcoder.jp/contests/abc264/submissions/34009948

E問題

E - Blackout 2

一読した印象として、Union-Findを使って連結判定するのと、クエリを逆から見ていき、電線を繋げたときに電気の通る街の増加数を数えれば良いかという感じ。

実装方針としては、各連結成分ごとの街の数と発電所の数を個別にカウントして、発電所と同じ連結成分に存在する街の数だけをカウントしていくというやり方で進めました。

で、30分ほどかけてサンプルが通る実装ができて、提出。一度WAを喰らってしまうものの、なんとかバグってるところを見つけて、終了3分前という危ういところで、なんとかACを取り切ることが出来ました。

96分16秒1ペナで4完。これが取れるのと取れないのとでは、パフォーマンス的に大分違ってた筈なので、なんとか助かりました。

ちなみに、今回の私の実装方針は、公式解説とほぼ同じ考え方でした。他の解説であった、全ての発電所を同じ頂点と見做すやり方のほうが実装は軽かったようですが。。

提出コード

https://atcoder.jp/contests/abc264/submissions/34019512

F問題

F - Monochromatic Path

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

G問題

G - String Fair

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

Ex問題

Ex - Perfect Binary Tree

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

これまでの実績

一応、Highestを更新することが出来ました。

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

総括

今回は、なんとか水パフォを確保できましたが、しょうもないミスをするクセ自体は全然治らずというところで、この辺を治すのが長期的な課題のように思えます。

ここ最近は、ABCの過去問を解き直すという練習を続けていますが、バーチャル参加などして、コンテスト本番の状況で練習を重ねるのも一案かもしれません。

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