デンソークリエイトプログラミングコンテスト2022(AtCoder Beginner Contest 280)参加記

2022/12/3に開催された、デンソークリエイトプログラミングコンテスト2022(AtCoder Beginner Contest 280)に参加しました。

atcoder.jp

前回ABCでは、3完で終了という体たらくでレートは暴落。

今回は、とりあえず連敗は阻止したいというところということで、まずはレート以上のパフォを出そうという感じで臨みます。

今回の結果

ABCEの変則4完でなんとか形にはなりました。

ABC280結果
ABC280結果

パフォーマンスは、ギリギリ入水というところで、前回の負けを少し取り戻すことができましたとさ。

振り返り

Dでハマってしまいましたが、なんとかE問題を倒すことができました。

ABC280提出結果
ABC280提出結果

A問題

A - Pawn on a Grid

A問題で、いきなりGrid問題かと思ったが、みてみると、文字列中の#を数えるだけでした。

2重ループでカウントする実装を行い、一度の提出でACが取れました。

1分53秒で1完。

提出コード

https://atcoder.jp/contests/abc280/submissions/36949485

B問題

B - Inverse Prefix Sum

問題文としては、ややこしく書いているが、S_{0} = 0とした時に、A_{i} = S_{i} - S_{i-1}として求めれば良いのではという感じ。

ということで、上記のように実装。問題なくACが取れましたとさ。

7分0秒で2完。ここまでは、まあまあという感じ。

提出コード

https://atcoder.jp/contests/abc280/submissions/36957837

C問題

C - Extra Character

文字列STを先頭から比較して、最初に異なった文字が現れる箇所が答えとなる。

ただ、末尾に挿入されるケースがあるので、実装上、|S|文字目まで異なる箇所がない場合は、|T|が出力されるようにする。

上記実装で問題なくAC。9分22秒で3完。

一応、3完まで10分を切れましたが、これぐらいでも、順位は1700ぐらいなんだよなあ。。

提出コード

https://atcoder.jp/contests/abc280/submissions/36960840

D問題

D - Factorial and Multiple

一読して、素因数分解するとなんとかなりそうな印象。

ということで、とりあえず、K素因数分解し、それぞれの素因数掛ける指数の最大値が答えかという実装を行う。が、、これはWA。

よくよく考えると、K = 16の場合、K = 2^{4}だが、想定解としては、6が正しいというところで、素因数毎に、何番目の倍数が正解になるかというのを厳密に求める必要がありそう。。

で、一旦実装してみるも、なぜかWAが消えないというのを繰り返し、気づけばどんどん時間が過ぎていくばかり。

残り時間もだいぶヤバくなってきたので、今回は一旦Dを諦めて、E問題に賭けてみることにしました。

E問題

E - Critical Hit

問題文を見る限り、多分DPで解けそう、なんならば、ちょっと前にやった双六の期待値問題の応用かなーという感じでした。

要は、Pパーセントの確率で2が出て、それ以外は1が出るサイコロを振り、ゴールまで何回振る必要があるかという期待値を求める問題かと。

ということで、あとはその時のコードを参考にしながら実装。サンプルまで合わすことができたのが、終了3分前というところでしたが、なんとか一度の提出でACが取れましたとさ。

87分55秒で4完。なんとか命拾いしました。

提出コード

https://atcoder.jp/contests/abc280/submissions/36995458

F問題

F - Pay or Receive

とりあえず、問題に目を通しましたが、残り2分では何もできず。

ここで時間切れとなりました。

G問題

G - Do Use Hexagon Grid 2

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

Ex問題

Ex - Substring Sort

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

これまでの実績

なんとか前回の負けを少し取り戻しました。年内に入水いけるかなあ。。

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

総括

今回、D問題でハマってしまい、再度自分の実装力不足を痛感することになりました。

このままでは、まだまだ入水は厳しい。とりあえず、今回の復習を行い、次に向けて準備するしかないというところです。

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