2023/7/2に開催されたAtCoder Regular Contest 163に参加しました。
前回のARCでは、0完爆死を喰らってしまい、レートが暴落してしまいました。また、今年に入ってから、何故かARCでは全くいい結果が出せず、ボロ負けしたという思い出しかありません。
最近、ARCには大分苦手意識が芽生えているところですが、とりあえず今回もRatedで参加。爆死だけは避けようという気持ちで臨みます。
Rated参加します。
— devgenjin77 (@devgenjin77) 2023年7月2日
前回0完爆死したので、今回はせめて1完確保という目標で挑みます✊
AtCoder Regular Contest 163 - AtCoder https://t.co/1kjZQfZxcb
今回の結果
なんとか、2完を確保しました。
これで、パフォーマンスは、今のレートぐらい。プラマイ0という結果でしたが、前言通りボロ負けしなかったのでヨシとします。
2完を確保して、なんとか緑パフォを獲得。
— devgenjin77 (@devgenjin77) 2023年7月2日
とりあえず負けなかったのでヨシ!
devgenjin77さんのAtCoder Regular Contest 163での成績:1389位
パフォーマンス:1120相当
レーティング:1117→1117 (±0) :|#AtCoder #ARC163 https://t.co/oJzlLLjJQU
振り返り
A,Bとも、もう少しシンプルに解けるはずが、難しく考えてしまい、余計な時間を掛けてしまいました。
A問題
前回に続いてA問題は300点なので、今度こそサクッと解きたいところ。
とりあえず問題を読んでみると、文字列をである2つの文字列に分割できれば良いらしい。
文字列を2文字目から末尾まで見ていって、となるがあれば答えはYes
。であった場合は、先頭から文字までの文字列と、それ以降の文字列を比較して、後者が辞書順で大きければYes
。
という感じで実装。前回のこともあるので、検証は念入りに実施して、多分大丈夫だろうというところで提出。ACを取ることができました。
13分6秒で1完。一応、0完爆死は免れたのでホッとしたという感じでしたが、順位表をみると、これが大分解かれている問題。
改めて考えてみれば、単純な全探索なので、もっとシンプルに解けばよかったかなあという印象です。
提出コード
https://atcoder.jp/contests/arc163/submissions/43186866
B問題
問題を一読した感じ、多分とに対する操作のみを考慮すれば良さげ。
配列をソートしてから、長さの区間の先頭と末尾の要素を見て、最小値と最大値を調整すれば良い。
というのが、本来の解法でしたが、何を思ったか、の各要素を、予め最小値との差に補正する前計算を入れてみたり、の場合は、最初に基準値をどちらかに寄せるなど、変な方向に実装を進めてしまったので、かえってバグを埋め込みWAの連発を喰らいました。。
結局、都合1時間ぐらいかかって、やっとシンプルな解法に気づき、ACを獲得。
70分8秒3ペナで2完。どうも、ARCの問題に苦手意識があるせいで、疑心暗鬼になってしまい、問題を難しい方に考える悪癖ができてしまっているようです。
提出コード
https://atcoder.jp/contests/arc163/submissions/43195881
C問題
Bで立ち遅れた分を、なんとか取り戻したかったのですが、これは全然わからず。。
そこそこAC数があるようで、なんかの典型かなあと思ってたりしましたが、結局、ここで時間切れです。
D問題
問題すら見ておりません。
E問題
問題すら見ておりません。
F問題
問題すら見ておりません。
これまでの実績
とりあえず今回は引き分けという結果。次のARCはなんとしても勝ちたいところです。
総括
AとBをペナ無しで解けてたら、勝っていたかというところでしたが、グダグダの結果になってしまいました。
ちなみに、C問題は解説を見ましたが、これを本番で思いつくとくことが全く想定できません。みんなどうやって思いつくんだろう。余程数学に明るく無いと思いつかんなあ。。
ARCは、これが典型というのが中々無いので、精進が捗りません。この際、他の人の提出なども見て、どうやって解くかの参考にしていこうかと思います。
ということで、また次回も頑張ります。