Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder Beginner Contest 233

5完1WA。

各問題

A - 10yen Stamp

算数の問題を、ときます。すでにXがYを超えているケースに注意する必要があります。

B - A Reverse

Lまでと、LからRのあいだと、R以降に分割して、真ん中のやつをreverseしてからくっつけ直せばよいです。

なぜか添字をミスりまくり、5分かけてしまいました・・・。

C - Product

「袋に入っているボールの個数の総積は 105を超えない。」という条件があるため、総当りしても間に合います。

D - Count Interval

累積和を取ります。あるsum[i]に対してsum[i] - Kとなるようなsumjがあれば、それが求める区間になります。

なので、iを順番に見ていって条件を満たすsum[j]を探せばいいのですが、愚直に見ていくと間に合わないので、すでに見終わった場所についてどの値がいくつ出現したかをmapで管理すれば1つのiにつきO(1)、全体でO(N)で(mapを使うのでO(NlogN)で)解くことができます。

デバッグ出力を消し忘れて1WA・・・。(実はこれが悲劇を招いた)

E - Σ[k=0..10100]floor(X/10k)

一番上の位には1番目の数のみが足され、2番目の位には1番目と2番目の数が足され、となるので、各桁の数値の累積和を取って、一番下の位から順に繰り上がりを考慮しつつ足し上げていけばよいです。

F - Swap and Sort

1から順にダイクストラで最短経路を出してシミュレートしていくという(いかにも嘘っぽい)貪欲解を書きましたが、案の定WAでした。

まとめ

順調にレートが伸びてHighest - 1まで上がってきましたが、D問題のデバッグ出力消し忘れがなければHighest更新でした・・・。もったいなーい。

水パフォ以上Streakも7で自己ベスト更新中です。いい感じ。青まではなかなか行かないのが微妙ではありますが。

f:id:mdstoy:20211225230515p:plain