大和証券プログラミングコンテスト2023(AtCoder Beginner Contest 331)参加記

2023/12/2に開催された、大和証券プログラミングコンテスト2023(AtCoder Beginner Contest 331)に参加しました。

atcoder.jp

最近、精進不足がたたっているのか、ABCでも全く良い結果が出ずで、レートの方は、緑の上の方で停滞している状況です。

とりあえず、再入水は早く達成したいところ。今回も水パフォ目標で挑みます。

今回の結果

なんと、今回は3完で終了という残念な結果になりました。。

ABC331順位表
ABC331順位表

結局、今回は緑パフォで、レートを上げることすらできずという結果で終了です。

振り返り

Dで、しこたまハマってしまい、Eにかける時間が無くなってしまいました。。

ABC331提出結果
ABC331提出結果

A問題

A - Tomorrow

なんか、IF文をこねくり回して解く問題という感じ。

実装後、サンプルで検証してたらバグらせているのに気づいてしまい、実装し直すなど、A問題にしてはやたらと時間がかかってしまいました。

なんとか実装をこなしてAC。5分22秒で1完です。

提出コード

https://atcoder.jp/contests/abc331/submissions/48102537

B問題

B - Buy One Carton of Milk

DPまでは要らんかなという感じでしたが、DPぐらいしか解法が浮かばず。

dp \lbrack i \rbrack :=卵を丁度i個買う時の最小金額という形で定義し、あとは上限に余裕を持って、卵200個ぐらいまでのケースを計算。

あとはN個以上買う時の最小金額を出すという感じの実装でACが取れましたとさ。

12分16秒で2完。

提出コード

https://atcoder.jp/contests/abc331/submissions/48110010

C問題

C - Sum of Numbers Greater Than Me

制約がA_i \le 10^{6}とあることから、max(A_i)のサイズの配列が定義できるという感じである。

Ans \lbrack i \rbrack :=Aの要素の内i以上の値の和、という配列を累積和を用いて計算すれば、あとはAの各要素について、配列を参照すれば答えが出せる筈。

ということで、上記の要領で実装して、なんとかACが取れましたとさ。20分50秒で3完。

提出コード

https://atcoder.jp/contests/abc331/submissions/48115887

D問題

D - Tile Pattern

めっちゃややこしそうな問題だが、(0, 0)を左上隅とし、任意の(x, y)を右下隅とする長方形に含まれる黒マスの個数をO(1)で求めることができれば、各クエリに対して答えを計算することができそうという感じ。

あとは、上記の計算をどうするかがキモなのだが、なんとか頑張って実装してみてサンプルまで通すことはできた。

が、、これを提出してみたら、WAという結果に。。。

WAの原因を考えてみるも、結局わからずじまいで、この問題は仕方なく諦めることにしました。

E問題

E - Set Meal

残り20分程度の段階で臨んだこの問題。

問題を見てみると、禁止される組み合わせの個数が、最大10^{5}程度であるということから、NM個のペアのうち、金額の大きいもの10^{5} + 1個が列挙できれば、答えが出るかなという感じ。

しかしながら、着手が遅かったこともあり、実装が追いつかずで時間切れとなりました。。

F問題

F - Palindrome Query

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

G問題

G - Collect Them All

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

これまでの実績

連敗続きで、レート1100台の維持すら怪しくなってきました。。

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

総括

最近、BやC問題の難易度を上げてきてる傾向にあるように思えます。この影響で、少し調子が狂わされているかもしれません。

とはいえ、最近の低迷は、明らかに精進不足に因るものが大きいと思ってます。最近仕事が多忙なことで、なかなか精進時間が確保できないということもありますが、直近のコンテストの振り返りぐらいは毎週こなして、最低限、実力を維持できるように頑張っていこうと思います。

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