AtCoder Beginner Contest 285 参加記

2023/1/15に開催されたAtCoder Beginner Contest 285に参加しました。

atcoder.jp

2023年のRatedコンテストは、ここまで2戦2敗という体たらく。

このままずるずると負け続けるのは、さすがに精神衛生上よろしくないということで、今回はまず連敗を止めようという気持ちで臨むことにしました。

今回の結果

先週のABCと同じく、4完で終了となりました。。。

ABC285結果
ABC285結果

しかしながら、順位は1000位近辺という好位置で水パフォが出てくれました。なんとか、連敗脱出成功です。

振り返り

D問題がパッと見えてくれたのが、勝因のようです。

ABC285提出結果
ABC285提出結果

A問題

A - Edge Checker 2

A問題から、いきなりグラフ問題??と思ったが、要はa,bが辺で直接つながっているかを見るだけということで、まあA問題の難易度の範囲なのかなと。

解法としては、問題図にあるツリーの親子関係の特徴を見て、b = 2ab = 2a + 1ならYesという感じで実装。問題なくACが取れましたとさ。

1分55秒で1完。

提出コード

https://atcoder.jp/contests/abc285/submissions/38042446

B問題

B - Longest Uncommon Prefix

問題文の説明が回りくどすぎて、何を言っているか良くわからんという状態でしたが、サンプルの説明などを見てなんとか実装のイメージができました。

チェックする文字の間隔とチェック開始位置で二重ループを行い、文字が一致したところで内側のループを抜けるような感じで実装。サンプルと合ったので、そのまま提出してACが取れましたとさ。

9分53秒で2完。

提出コード

https://atcoder.jp/contests/abc285/submissions/38048553

C問題

C - abc285_brutmhyhiizp

文字列Sを26進数として解釈し、10進数の数値に変換すればよい。

最初、実装をバグらせてしまい、サンプルを通すのに少し苦労しましたが、なんとかサンプルが通る実装を完成させて提出。問題なくACが取れました。

17分8秒で3完。

提出コード

https://atcoder.jp/contests/abc285/submissions/38052653

D問題

D - Change Usernames

答えがYesとなるサンプルとNoとなるサンプルの違いを見てると、どうも変更したい名前どうしでループが発生するとNoになるみたい。

ということは、Union-Findを使ってサイクルが検出できればNo。あと名前の文字列がノードになるが、HashMapを使って各ユーザー名に対してユニークにIDを振ってやればグラフっぽく扱えるかと。

この解法でいけるかどうか、半々ぐらいの気持ちで実装してましたが、提出してみると一発でACが取れました!

27分7秒で4完。このD問題が解けたところで、なんと順位は670台という好位置に。すこしエスパー気味の考察でしたが、早めに解けてよかったです。

提出コード

https://atcoder.jp/contests/abc285/submissions/38056832

E問題

E - Work or Rest

順位表のAC数を見ると、大分手ごわそうな問題のように思える。。

まず、制約からO(N^{2})のDPで解くのかという感じだが、肝心のDPの定義が思いつかない。

ネックになることとして、先週の最後の休みの位置が確定しないと一週間の初日の計算値が確定しないだろうとか、いろいろ悩んでいました。

結果としてはこの問題で時間を使い切ってしまい終了。

あとで解説を見ると、初日を休日として確定させておくというオチ。こんな発想も浮かばないようではダメだという感じです。

こういう発想を出すためには、類題を多く取り組まんといかんのかなあ。

F問題

F - Substring of Sorted String

E問題が解けないので、一応F問題もチェックしてみましたが、手も足も出ず。

G問題

G - Tatami

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

Ex問題

Ex - Avoid Square Number

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

これまでの実績

2023年初勝利!内容はともかく、連敗を止めることができてホッとしたというのが正直なところです。

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

総括

今回は、D問題まで比較的早めに解けてくれた効果でなんとか高いパフォーマンスが出てくれました。

しかしながら、本当は、5完、6完を達成して高パフォーマンスを取って勝つというのが理想なので、今回の内容で満足はできません。

また、次週のコンテストに向けて、水Diff、青Diffの問題に取り組んで精進していこうと思います。

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