AtCoder Beginner Contest 236 参加記

2022/1/23に開催されたAtCoder Beginner Contest 236に参加しました。

atcoder.jp

昨日のARCでは1完で冷えという残念な結果だったので、今回で盛り返しできるようにという気持ちで臨むことにしました。

今回の結果

結果は4完。D問題に大分手こずってしまいました。。

ABC236結果
ABC236結果

それでも、肝心のパフォーマンスは水色まで出てくれまして、なんとかHighestを更新することができましたとさ。

振り返り

今回はDが解けるのと解けないのでは大分違う状況になりましたね。

ABC236提出結果
ABC236提出結果

A問題

A - chukodai

文字列Sa文字目とb文字目を入れ替えるだけの簡単な問題。

こちらは問題なくACを取ることができました。

提出コード

https://atcoder.jp/contests/abc236/submissions/28721351

B問題

B - Who is missing?

配列Aの中に、どの整数が何回出現したかを配列で管理し、最終的に出現回数が3だった数字を出力すればよい。

こちらも問題なくACが取れました。

因みに、コンテスト後の解説などを見ると、配列Aの全部のxorを取ると答えになるということ。本番でこのような発想が出るようになりたいものですなー。

提出コード

https://atcoder.jp/contests/abc236/submissions/28729131

C問題

C - Route Map

配列Tの要素を全部Setに突っ込んでから、Sの要素についてTに含まれていればYes、なければNoを出力すればよい。

こちらも問題なくACを取ることが出来ました。

提出コード

https://atcoder.jp/contests/abc236/submissions/28735054

D問題

D - Dance

一目、あり得る全ての組み合わせについて、しらみつぶしに計算して最大値を求めればよいかと思われる。

ということで、計算途中でどの人が既に選ばれたのかを配列で管理しながら、DFSで探索して最深部で答えを計算するプログラムを組んでみる。

で、これがサンプルまで通ったものの、提出してみればあっさりTLEを喰らってしまう。うーむ、まさかD問題で詰まってしまうとは。。

メモ化して高速化が図れるのかとか、または別の考え方が必要なのかと色々考えてみるが解法は見えずというところでどんどん時間は過ぎてしまう。ちなみにこの時点での順位は3600ぐらいであり、このD問題を落とすとレート下げがほぼ確実であり、かなりピンチである。

で、あれこれ思案した結果、単純な全探索のDFSだと同種のペアも重複して数えてそうなので、ペアを作るときは小さいほうの番号から大きい方の番号にのみ探索をかけていくやり方に限定すればよいのでは思いつく。で、この改良をしたDFSもどきのプログラムでサンプルを通してみると、数段早くなっているようなので、提出してみたらやっとACをもらう事ができました。

このDが通せた事で順位は一気に1300台まで上昇!なんと茶パフォになりかねないところから一気に水パフォぐらいまで上げることができましたとさ。

提出コード

https://atcoder.jp/contests/abc236/submissions/28750618

E問題

E - Average and Median

順位表からの情報では、今回のE問題は開始60分を過ぎてもAC数が500足らずというところで、青Diffぐらいの問題なのかと。

一応、時間はあるので問題は見てみましたが、さっぱりわからずということで早々にこの問題は諦めました。

F問題

F - Spices

この問題も、E問題よりAC数が少ないということで、見る前から戦意が喪失しそうな問題でしたが、一応チラ見ぐらいはしておくことに。

しかし、結局何もわからずで諦めました。

G問題

G - Good Vertices

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

Ex問題

Ex - Distinct Multiples

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

これまでの実績

水色到達に向けて、また一歩前進することができました。

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

総括

今回はDが通せたか通せなかったかでパフォーマンスが大幅に変わるところでしたが、なんとか今回Dが通せたのは、良かったです。これも日ごろの精進のおかげかも知れません。

ただ、水色コーダ―になるためには、今回全く歯が立たなかったE以降の問題も取り組んでいけるように、水Diff以上の過去問に集中して取り組んでいくことが必要かなーと思います。

また次の土日も、ARC、ABCが連続であるようなので、平日も精進を続けていきます。

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