2023/2/25に開催されたAtCoder Regular Contest 157に参加しました。
前回ARCは、なんとか1完達成しましたが、レート的には敗北という残念な結果でした。
今週は結構AHCに時間を取られており、アルゴリズム精進の時間は取れていない中での参加で不安要素もありますが、今回は2完以上を目標として臨むことにします。
AHCの途中ですが、Rated参加します。
— devgenjin77 (@devgenjin77) 2023年2月25日
今回は2完目標で頑張ります!
AtCoder Regular Contest 157 - AtCoder https://t.co/OzhT6OR47Y
今回の結果
今回も、結局1完で終了と言う結果でした。。
パフォーマンスはギリ1000に届かずで、今回もレート的には負け。今年のARCは全て負けており、通算5連敗です。
1完緑パフォで冷えました😢
— devgenjin77 (@devgenjin77) 2023年2月25日
次頑張ります。
devgenjin77さんのAtCoder Regular Contest 157での成績:1578位
パフォーマンス:997相当
レーティング:1144→1130 (-14) :(#AtCoder #ARC157 https://t.co/v4ZrWsyeBE
振り返り
A問題以外全然わかりませんでした。
A問題
問題一覧をみてると、全体的にXYの並びが多いなあという印象でしたね。
で、今回のA問題は300点問題なので、パフォーマンスを考えると早めに解いておきたいところでしたが、一読したところコーナーケースが潜んでいそうで少し難しいのではという感じでした。
手元でいろんなケースを試してみたものの、これといったシンプルな解法は見つからず。仕方が無いので愚直で解いてみることに。
まず、 XX
,XY
,YX
,YY
のうち、ありうるケースを先頭で固定する。
現在の末尾がX
の時、XY
の残りがある場合は一つ使って末尾をY
に、末尾がY
の時、YX
の残りがある場合は一つ使って末尾をX
にする処理を繰り返す。この処理が終了したときに、XY
の個数と、YX
の個数が両方0でない場合はNG。
次に、一回でも文字列中にX
があった場合はXX
を0に、Y
があった場合はYY
を0にする。この時点で、XX
の個数と、YY
の個数が両方0でない場合はNG。それ以外はOK。これをありうる先頭のパターン全てでチェックする。
上記の要領で実装して、なんとかACが取れましたとさ。33分42秒で1完です。
今回は、制約がで間に合うやつだったのでなんとかループで解きましたが、のケースがあったらちょっとどうなっていたか分からなかったですね。
でも、なんとか0完を阻止できたのでヨシ。
提出コード
https://atcoder.jp/contests/arc157/submissions/39185526
B問題
残りが90分弱あるので、取り組んでみましたが、これといった解法は思いつかずでした。
元から、X
しかないケースや、がX
の個数以下の場合はそれなりに解けそうだが、それ以外のケースをどうするかというところが悩みどころ。
あれこれ試行錯誤しましたが、結局結論を出せないまま、時間切れです。
C問題
問題すら見ておりません。
D問題
問題すら見ておりません。
E問題
問題すら見ておりません。
F問題
問題すら見ておりません。
これまでの実績
なんとか爆死を免れましたが、停滞モードは継続中です。
総括
今回も、0完爆死だけは避けたという結果。こういう回は、A問題をもう少し早く通せないと厳しいですね。。
ARCについては、直近5連敗ということで、かなり苦手意識を持ってしまうところですが、ここを克服しないともっと上にはいけないと思いますので、引き続き今回の復習と、ARC過去問の精進を進めていき、次に備えたいと思います。
ということで、また次回も頑張ります。