AtCoder Regular Contest 130 参加記

2021/11/28に開催されたAtCoder Regular Contest 130に参加しました。

atcoder.jp

ARCはめちゃくちゃ久しぶりの参加。ここ最近は基礎を固めようということでABCコンテストに絞って参加するようにしてきましたが、この前日に行われたABC229は都合がつけられず不参加となり、あまり間を開けたくなかったのと、そろそろARCも参加してみようかなーという気まぐれが合わさり、今回参加することになりました。

これまでのARCの最高記録は3完というところ。直近のARCも問題ぐらいは目を通していたのですが、この難易度ぐらいだと2完はできればレート維持は可能かな、という感じだったので、とりま2完が目標ということで臨んでみることにしました。

今回の結果

で、今回はなんとか2完を確保できました。とりあえず有言実行です。

ARC130結果
ARC130結果

が、、なんとパフォーマンスはギリギリ緑にのった程度しか出ず、久しぶりのレート減という結果になりました。。

振り返り

A、B問題ともなんとか解けたという体たらくでした。

ARC130提出結果
ARC130提出結果

A問題

A - Remove One Character

初っ端のA問題から問題の理解に苦しみましたが、サンプルをみると、同じ文字が連続する回数を見ていけば良さそうという印象。

文字列を先頭から見ていき、同じ文字が2連続以上した場合連続した回数をリストに追加。あとは、リストに追加した回数Kに対して、初項1、公差1、項数がK - 1の等差数列の和を答えに加算していくことで解けそうかと。

で、ここまでの考察とか等差数列の公式をググったりという作業で時間はかかりましたが、なんとかACを取ることが出来ました。

提出コード

https://atcoder.jp/contests/arc130/submissions/27570725

B問題

B - Colorful Lines

与えられたクエリを順番に処理するためには、どの色が上塗りされて消されたかという情報を逐次更新していく必要があり、マス目の大きさやクエリ数の制約からすると愚直にこれを行うのは難しそう。

だからといって、これを解くために必要な典型アルゴリズムがあるのかもよくわからずで、いろいろ思考を廻らせるも解決策が見えずで、20分以上時間を浪費しましたが、最後のクエリから逆順で処理をしていき、1列を塗る場合は、これまでに塗った行数分のマス目を、1行を塗る場合は、これまでに塗った列数分のマス目を引いてやることで上手く計算ができることに気づいた。

あとは、塗った列番号、行番号をそれぞれ別のSetで管理し、クエリのタイプごとに差し引くマス目を求めることで実装、なんとかACが取れてくれました。

これでなんとかノルマの2完達成。このときはまさかレートが冷えるとは思いもしませんでした。。

提出コード

https://atcoder.jp/contests/arc130/submissions/27574341

C問題

C - Digit Sum Minimization

3完を目指すべく望んだC問題でしたが、一読しようと何読しようと全く解法が思いつかず。。

時間はある程度残ってましたが、ほぼほぼ諦めモードで結局そのまま終了と相成りました。

D問題

D - Zigzag Tree

問題をチラ見しましたが、何も分からず。

E問題

E - Increasing Minimum

問題すらみれておりません。

F問題

F - Replace by Average

問題すらみれておりません。

これまでの実績

長らく続いていた上昇トレンドも、11連騰で終了。まあ連勝はいつか終わるものなので、あまり気にしても仕方ないですなー。負け惜しみですが。

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

総括

今回、久々のARC参加。パフォーマンスは出ませんでしたが、当初は2完できずにレート暴落するかという不安しかなかったため、なんとか大怪我せずにすんだかという印象です。

やはり、ARCに出るからには青Diffあたりこなせないと難しいかもしれませんが、今後の自身のレベルアップの為にはARCも積極的に参加していく必要があるかと思いますので、年末にかけてARCは都合のつく限り参加していこうという所存です。

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