2022/1/23に開催されたAtCoder Beginner Contest 236に参加しました。
昨日のARCでは1完で冷えという残念な結果だったので、今回で盛り返しできるようにという気持ちで臨むことにしました。
Rated参加します。昨日のARCでは冷えてしまったので、連敗しないように頑張ります✊
— devgenjin77 (@devgenjin77) 2022年1月23日
AtCoder Beginner Contest 236 - AtCoder https://t.co/9fc6TmBmes
今回の結果
結果は4完。D問題に大分手こずってしまいました。。
それでも、肝心のパフォーマンスは水色まで出てくれまして、なんとかHighestを更新することができましたとさ。
4完でも水パフォが出て、Highest更新しました😂😂
— devgenjin77 (@devgenjin77) 2022年1月23日
来週の土日も頑張ります✊
devgenjin77さんのAtCoder Beginner Contest 236での成績:1449位
パフォーマンス:1309相当
レーティング:1022→1054 (+32) :)
Highestを更新しました!#AtCoder #ABC236 https://t.co/5kkSlPJqf5
振り返り
今回はDが解けるのと解けないのでは大分違う状況になりましたね。
A問題
文字列の文字目と文字目を入れ替えるだけの簡単な問題。
こちらは問題なくACを取ることができました。
提出コード
https://atcoder.jp/contests/abc236/submissions/28721351
B問題
配列の中に、どの整数が何回出現したかを配列で管理し、最終的に出現回数が3だった数字を出力すればよい。
こちらも問題なくACが取れました。
因みに、コンテスト後の解説などを見ると、配列の全部のxorを取ると答えになるということ。本番でこのような発想が出るようになりたいものですなー。
提出コード
https://atcoder.jp/contests/abc236/submissions/28729131
C問題
配列の要素を全部Setに突っ込んでから、の要素についてに含まれていればYes、なければNoを出力すればよい。
こちらも問題なくACを取ることが出来ました。
提出コード
https://atcoder.jp/contests/abc236/submissions/28735054
D問題
一目、あり得る全ての組み合わせについて、しらみつぶしに計算して最大値を求めればよいかと思われる。
ということで、計算途中でどの人が既に選ばれたのかを配列で管理しながら、DFSで探索して最深部で答えを計算するプログラムを組んでみる。
で、これがサンプルまで通ったものの、提出してみればあっさりTLEを喰らってしまう。うーむ、まさかD問題で詰まってしまうとは。。
メモ化して高速化が図れるのかとか、または別の考え方が必要なのかと色々考えてみるが解法は見えずというところでどんどん時間は過ぎてしまう。ちなみにこの時点での順位は3600ぐらいであり、このD問題を落とすとレート下げがほぼ確実であり、かなりピンチである。
で、あれこれ思案した結果、単純な全探索のDFSだと同種のペアも重複して数えてそうなので、ペアを作るときは小さいほうの番号から大きい方の番号にのみ探索をかけていくやり方に限定すればよいのでは思いつく。で、この改良をしたDFSもどきのプログラムでサンプルを通してみると、数段早くなっているようなので、提出してみたらやっとACをもらう事ができました。
このDが通せた事で順位は一気に1300台まで上昇!なんと茶パフォになりかねないところから一気に水パフォぐらいまで上げることができましたとさ。
提出コード
https://atcoder.jp/contests/abc236/submissions/28750618
E問題
順位表からの情報では、今回のE問題は開始60分を過ぎてもAC数が500足らずというところで、青Diffぐらいの問題なのかと。
一応、時間はあるので問題は見てみましたが、さっぱりわからずということで早々にこの問題は諦めました。
F問題
この問題も、E問題よりAC数が少ないということで、見る前から戦意が喪失しそうな問題でしたが、一応チラ見ぐらいはしておくことに。
しかし、結局何もわからずで諦めました。
G問題
問題すら見ておりません。
Ex問題
問題すら見ておりません。
これまでの実績
水色到達に向けて、また一歩前進することができました。
総括
今回はDが通せたか通せなかったかでパフォーマンスが大幅に変わるところでしたが、なんとか今回Dが通せたのは、良かったです。これも日ごろの精進のおかげかも知れません。
ただ、水色コーダ―になるためには、今回全く歯が立たなかったE以降の問題も取り組んでいけるように、水Diff以上の過去問に集中して取り組んでいくことが必要かなーと思います。
また次の土日も、ARC、ABCが連続であるようなので、平日も精進を続けていきます。
ということで、また次回も頑張ります。