AtCoder Regular Contest 136 参加記

2022/2/27に開催されたAtCoder Regular Contest 136に参加しました。

atcoder.jp

ここ最近レート上がってねーな。。とか思ってたら、いつの間にか直近のコンテストは4連敗という体たらく。

とりあえず今回は連敗を止めねばという気持ちで臨むこ事としました。

今回の結果

で、今回も、なんと1完という体たらく。。競プロ難しすぎ。

ARC136結果
ARC136結果

パフォーマンスはギリギリ緑という所で、都合5連敗。4桁レートの維持も危うくなってきました。。

振り返り

Bで悪戦苦闘したものの、結局見当外れのことをやってたようです。

ARC136提出結果
ARC136提出結果

A問題

A - A ↔ BB

文字列Sを先頭から見ていき、以下の要領で、答え用の文字列S^{\prime}に文字を追加する。

  • Aは辞書順最低なのでそのままS^{\prime}に追加する。
  • Cは変換不可なのでそのままS^{\prime}に追加する。
  • BABBBABと変換すると辞書順が小さくなる。変換後、AS^{\prime}に追加する。
  • BBAに変換してS^{\prime}に追加する。

この要領で実装し、サンプルが通ったので提出したところ、問題なくACが取れましたとさ。

15分19秒というまあまあのタイムで1完。

提出コード

https://atcoder.jp/contests/arc136/submissions/29743239

B問題

B - Triple Shift

とりあえず、数列ABに現れる数字の種類と出現数が一致しない場合Noというのはわかるが、その後がわからない。

ただ、数字の移動自体は結構自由にできそうだという印象である。

よって、数列Aを数列Bの後ろ3要素より前の要素まで並びを同一にしてから、数列Aの残りの3要素の並びで数列Bの後ろ3要素が構成できるかという判定にしてみる。

ただし、実際に並び替えをシミュレーションするのは処理が大変でTLEになりそうなので、数列Aを後ろから見て、数列Bの後ろ3要素と同じ数字を並びを変えずに取得。そこから、Bの後ろ3要素と同じ並びに変更できるかという判定で実装してみた。

で、これがサンプルまで通ったものの、WAを喰らう。。。

では、数列Aを前から見ていく方針に変えたらどうかということで実装するも、これもWA。。

結局、時間切れまでWAが取り切れずということで終了となりましたとさ。

で、コンテスト後に解説を見ると、転倒数の性質を使うとのこと。そんな発想は全く無かったなー。。

C問題

C - Circular Addition

ワンチャンあるかと少し目を通してみたものの、何もわからずで諦め。

D問題

D - Without Carry

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

E問題

E - Non-coprime DAG

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

F問題

F - Flip Cells

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

これまでの実績

水色どころか、緑をキープできるかという事が当面の問題になってきそうです。

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

総括

今回のB問題は水色Diffだったようですが、これぐらいの難易度の問題がBにくると、良いパフォーマンスが出ませんねー。

この水色Diff辺りが攻略できていないという事が、最近のコンテストでじり貧になっている要因と思いますので、本腰入れて水色Diffあたりの問題の復習にとりくんでいきます。

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