エイシングプログラミングコンテスト2022(AtCoder Beginner Contest 255)参加記

2022/6/11に開催された、エイシンプログラミングコンテスト2022(AtCoder Beginner Contest 255)に参加しました。

atcoder.jp

先週のABCコンテストは、久々の茶パフォを出してしまい、レートは大幅に低下。今回はその負け分を取り戻そうという気持ちで臨むこととしました。

今回の結果

で、今回は4完というなんとも微妙な結果となりました。

ABC255結果
ABC255結果

今回も負けを覚悟してましたが、パフォーマンスはギリギリレート以上に出てくれたようで、なんとかプラス1という結果。

とりあえず連敗は避けることができましたー。

振り返り

今回は、前半から実装が重い問題が続いたという印象です。

ABC255提出結果
ABC255提出結果

A問題

A - You should output ARC, though this is ABC.

2 \times 2の行列AからA_{R,C}を出力せよ、という問題。

やるべきことは簡単だが、Javaだと入力を書くところから結構めんどくさいw

とはいえ、ここは普通に実装して、提出。問題なくACが取れました。

2分22秒で1完。

提出コード

https://atcoder.jp/contests/abc255/submissions/32375017

B問題

B - Light It Up

B問題にしては難易度が高めの問題が出て来たかという印象。

とりあえず全探索が間に合いそうな制約なので、全探索で実装することに。

明かりを持っていない人それぞれについて、一番近いところにいる明かりを持っている人の距離を求め、あとはその距離の最大値を答えとして出力すれば良い。

あとは、実装して問題なくACが取れました。

19分5秒で2完。少し時間がかかり過ぎというところ。

提出コード

https://atcoder.jp/contests/abc255/submissions/32383922

C問題

C - ±1 Operation 1

これは考察が結構ややこしそうな問題。なんとか頑張って場合分けを考えていく。

とりあえず、AXの差分を取る。差分が0の場合は、答えは0

公差D0の場合は、差分の絶対値がそのまま答えとなる。

Aに、公差Dを足していくことで、Xとの差が開いていくような条件の場合は、最初にとった差分の絶対値がそのまま答えとなる。

上記以外の場合が結構ややこしいのだが、「良い数」のうち、Xと差分が最も小さいものの候補としては、

  • 初項Aに対して、差分を公差Dで割った回数分Dを足した数。

  • 上記に対して、もう一回Dを足した数。

  • 初項Aに対して、公差DN - 1回足した数

以上3候補が挙げられる。

あとは、公差を足す回数が項数以上にならないように考慮して実装すれば良いという感じだったが、実際は実装で色々とバグらせてしまい、ACを取るまでに合計3回もWAを喰らうこととなりました。

今回も、凡ミスをしてしまうことになり、反省しきりです。

44分43秒3ペナで3完。だいぶ立ち遅れてしまったという感じ。。

提出コード

https://atcoder.jp/contests/abc255/submissions/32394948

D問題

D - ±1 Operation 2

とりあえず数列Aをソートして累積和を取っておく。

Xの値が、Aのどの数より小さい場合は、Aの全ての合計からX \times Nを引いた値が答えとなる。

Xの値が、Aのどの数より大きい場合は、X \times NからAの全ての合計から引いた値が答えとなる。

上記以外の場合は、ソート済みの数列Aを二分探索し、前から何個目までの要素がXより小さいかを求める。

Xより小さい要素数B個とした場合、答えは、X \times Bから、ソート済み数列AB個目までの累積和を引いた値と、ソート済み数列AB + 1個目以降の累積和からX \times (N - B)を引いた数を足した値となる。

なんとか、ここまでの考察を進めることができて、実装。なんとかACを取り切ることができましたとさ。

71分32秒3ペナで4完。これでは今回の勝ち負けは微妙なところ。

提出コード

https://atcoder.jp/contests/abc255/submissions/32404830

E問題

E - Lucky Numbers

とりあえず、一読して解法が思いつかない問題だが、最終まで喰らいついてみることに。

で、とりあえずAの先頭の値を決めれば、あとの要素は確定するので、先頭要素をXのどれかの要素に固定してから導出したAに何個Xの値が含まれているかを調べれば良いのでは?という感じで実装。

が、、結局この考察はサンプルすら通らずでダメ。。

あとは色々考察をしてみるも、解法には至らずでそのまま時間切れとなりました。

F問題

F - Pre-order and In-order

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

G問題

G - Constrained Nim

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

Ex問題

Ex - Range Harvest Query

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

これまでの実績

とりあえず連敗は避けることができましたとさ。

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

総括

今回はE以降が水Diff以上で個人的には難問だったので、4完はある程度しかたないところ。C問題で凡ミスが多かったのが反省材料です。

とりあえず、水Diffあたりの問題を本番で解けるようにするのが直近の課題ですな。過去問などを解説なしで考察するなどして、考察力を向上していければというところです。

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