AtCoder Regular Contest 150 参加記

2022/10/9に開催されたAtCoder Regular Contest 150に参加しました。

atcoder.jp

昨日のABCでは、あわや青パフォかという結果となり、入水まであとすこしというところまで来ました。

今回のARCには、なんとか入水を決めようということで、目標は高く3完を目指して臨むこととしました。

今回の結果

で、今回は1完がやっとという体たらく。。

ARC150結果
ARC150結果

流石に今回は3桁パフォで爆死かと思いましたが、結果をみるとなんとか緑パフォ。なんとかレートは1桁減というところで勘弁してくれました。

振り返り

A問題を解き切るだけで精一杯でした。

ARC150提出結果
ARC150提出結果

A問題

A - Continuous 1

今回はサクッと解こうと考えていたA問題。一読すると、これがやたらと難しく感じる。。

まずは、文字列Sの中の01をどう管理するかでだいぶ悩む。結局、ある位置より前もしくは後ろに01があるかが判定に重要そうなので、TreeSetで01の位置を管理することにしてみる。

次に、文字列を先頭から一つずつ位置を決めて見ていった時、決めた位置から右に1の並びをK個作ることができ、かつその後に1が無いかをみる。作れる位置が一つだけなら答えはYesとなる。

この条件を満たすには、決めた位置より左に1が無いこと、右にK個以内に0が無いこと、右にK個より後に1が無いことが分かればよい。

ということで実装し、提出したら、これが見事にWA。。。

個人的にはイケそうという確信があったので、どんなケースでつまづいたのかよくわからん。ということで、とりあえず、ローカルでいろんなパターンを試してみることに。

すると、N=10, K=9, S=?11111????など、0が無いパターンが間違ってるということで、S0が無い場合、N=KならOK、それ以外はNGとかいろんな場合分けを入れてみる。

が、、結局よくよくみると、For文の継続条件がバグってたということに、初回提出から30分ほど経って気づいてしまう。

ここのバグを修正して提出したところ、なんとかAC。とりあえず、0完爆死だけは免れることが出来ましたとさ。

79分31秒1ペナで1完。A問題で相当時間を持ってかれてしまいました。。

提出コード

https://atcoder.jp/contests/arc150/submissions/35545193

B問題

B - Make Divisible

問題を一読して考えるも、全くわからず。

とりあえず、BAmodを使ってなんとかならないかという線で考えてみる。

まずBAmodを取り、modB / 2より小さい場合はAmax(mod / ( B / A ), 1)を足す。そうで無い場合は、Bmax((B - mod) / (( B / A ) + 1), 1)を足してみる。

これをmod0になるまで繰り返すという、なんかそれっぽい実装をしてみる。

が、サンプルを通してみると、たしかにそれっぽい値はでるが、てんで合わないという結果。結局これ以上はなにもわからずで終了です。

C問題

C - Path and Subsequence

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

D問題

D - Removing Gacha

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

E問題

E - Weathercock

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

F問題

F - Constant Sum Subsequence

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

これまでの実績

とりあえず傷が浅くて済んだのがなによりです。

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

総括

今回は、あわや0完で爆死というところでしたが、なんとか1完を勝ち取ることができました。

やはりARCは、問題セットの相性が結果に大きく響いてしまいますね。もうこのあたりは、回数をこなして乗り越えるしかないのかと考えています。

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