AtCoder Regular Contest 148 参加記

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

atcoder.jp

一時は、入水目前までレートを上げたものの、ここ2回のRatedコンテストで大敗し、レートは暴落。入水までの道のりは遠いものとなりました。

今回は、なんとかこの連敗を止めて、とりあえず、この悪い流れを断ち切ろうという気持ちで臨むこととしました。

今回の結果

終盤まで苦戦し、あわや0完爆死かというところを、なんとか滑り込みで2完達成という、いいのか悪いのかよくわからん結果でした。

ARC148結果
ARC148結果

パフォーマンスは、なんとか緑上位まで持ってきたものの、すこし勝ちに及ばずという結果。残念ながら連敗を止めることはできませんでしたが、爆死は免れたのでヨシかと。

振り返り

A問題で、ドはまりしてしまいました。

ARC148提出結果
ARC148提出結果

A問題

A - mod M

M=2とすると、余りの種類数は必ず2以下になるので、この問題は、余りの種類数を1にできるかという問題だということは分かった。

あとは、試すべきMの候補をどのくらい絞れるかというところ。

まずは、Aのうち最小の要素を素因数分解して、その素因数をMの候補にしてみる。が、これはサンプルすら通らずでNG。

この辺で、解法のアイデアがまったく出てこず、30分ほど悩んで時間を溶かしてしまう。。

仕方がないので、サンプル3の答えがどうなるかを愚直に計算してみた時、実はAの隣同士の差分が関係するのではないかと推察。

ということで、Aをソートして、隣同士の差分をとり、その差分の最小値を素因数分解すればなんとかなるかというところで組んでみると、なんとかサンプルが通る実装が完成。

が、、提出してみたらWA。。。

結局、1時間程度掛かったところで、一旦この問題は撤退。順位表上、そこそこ解かれているB問題に取り掛かることとしました。

ーーー

とりあえず、なんとかB問題を解き切りました。終了まで残り10分を切っている状態ですが、なんとかAも解けないかと悪あがきしてみる。

で、前半時点で試してなかった、以下の2処理を入れてみることに。

  • M=2で操作したときに、種類数が1なら、そこで答えを1として終了

  • Aの隣同士の差分をソートした時の最大値を素因数分解する。その素因数全部をMの候補として試す。

で、これがなんとか当たってくれたようで、終了1分前というギリギリのところで、ACを取り切ることができました。

118分32秒5ペナという、ボロボロの内容でしたが、なんとか2完を確保しました。

ちなみに、公式解説では、GCDを計算するというのが解法だということでしたが、本番中は、全く思いつきませんでした。

提出コード

https://atcoder.jp/contests/arc148/submissions/34801402

B問題

B - dp

LRを適切に決めて、1回の操作で辞書順最小の文字列にしましょうという問題。

まず、LSのうち一番左にあるpの位置というのは直感でわかった。

あとは、Rをどうするかというところだが、まずはSの中でもっともpが連続している部分列の右端じゃないかと推察。

そのような候補が2つ以上ならどうするかという問題もあるが、まずは候補のうち、最も左側のものをRということにしてみる。

で、これで出してみたら、WA。。。

仕方がないので、そのような候補全てについて、操作を試し、できた文字列の最小を求めるという方向でやってみる。

これが、もしかしてTLEするかと思ったが、なんとかその懸念は不要だったもよう。とりあえず、ACを取ることができました。

108分15秒1ペナという、酷いタイムですが、なんとか1完を確保。

因みに、公式解説では、Rは全探索でも行けるということでした。うーん、ムダなWAを取ってしまったのが少し悔やまれる。

提出コード

https://atcoder.jp/contests/arc148/submissions/34799682

C問題

C - Lights Out on Tree

順位表から見ると、ある程度のAC数があったので、ワンチャンあるかと問題文を確認してみましたが、何もわからず。。

D問題

D - mod M Game

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

E問題

E - ≥ K

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

F問題

F - 998244353 → 1000000007

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

これまでの実績

Rated3連敗となりました。非常にもどかしい展開です。

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

総括

今回は、連敗を止めるどころか、0完爆死を喰らいかねない展開でしたが、なんとかギリギリ耐えたというところでした。

しかし、ここ最近のARCでは、いい結果が出てないですな。やはり、ABCの過去問精進に偏っているのが原因かもしれません。

また、今回の結果を振り返って、次回に向けて精進していきたいと思います。

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