AtCoder Beginner Contest 332参加記

2023/12/10に開催された、AtCoder Beginner Contest 332に参加しました。

atcoder.jp

土曜のARCでは、なんとか水パフォを確保して少しレートを戻すことができました。

しかしながら、直近ではABCだけでみると3連敗中。。精進不足ということもありますが、凡ミスのせいで順位を大きく落としてます。

今回は、なんとか連敗を止めようという感じで臨んでみます。

今回の結果

E問題以降の難易度が高かったこともあり、4完で終了。Dは、もう少し早く解けてたなあという印象です。

ABC332順位表
ABC332順位表

パフォーマンスの方は、ギリ水色に到達。なんとかABCの連敗を止めることが出来ましたとさ。

振り返り

D問題で誤読があり、解答が大きく遅れてしまいました。

ABC332提出結果
ABC332提出結果

A問題

A - Online Shopping

書いてることを、そのまま実装するだけという感じの問題。

最初に、答え\sum_{i=i}^{N}(P_i \times Q_i)を計算し、S未満だった場合は、送料としてK円を答えに足せば良い。

提出して、問題なくAC。2分1秒で1完です。

提出コード

https://atcoder.jp/contests/abc332/submissions/48364277

B問題

B - Glass and Mug

何がしたい操作なのか、よくわからんが、とりあえず書いてることをそのまま実装してシミュレーションすれば良いかと。

サンプルが通る実装を組んで提出。問題なくACで、7分33秒で2完です。

提出コード

https://atcoder.jp/contests/abc332/submissions/48370656

C問題

C - T-shirts

貪欲で解けないかと思ったが、よくよく考えると、Nを上限とした二分探索でも行けるかという感じ。

問題なくサンプルが通る実装が組めたので、提出したら、問題なくACが取れましたとさ。18分3秒で3完。

ちなみに、これ制約が最大1000と小さいので、0個〜N個買うを全部試すの貪欲でも通せた模様。

提出コード

https://atcoder.jp/contests/abc332/submissions/48378188

D問題

D - Swapping Puzzle

最近のD問題にありがちな、実装重めの全探索という印象の問題。

制約を見てると、全パターン試せばいいのかという感じだが、今回は並び替えの最小回数まで求める必要があるので、少しハードルが上がる感じ。

で、とりあえず、目的が達成できるかを考察してみると、行の入れ替えと列の入れ替えは独立に評価できそうなので、それぞれ行と列の並びを順列全探索で試せば良いことがわかった。

あとは、交換回数を最小化するだけだが、当初、行、列に対する操作は任意の箇所を交換できると誤読していたため、実際に実装してみるとサンプルが合わないという事態に。

これでかなりの時間をロスしてしまいましたが、よくよく問題を見直すと、隣同士しか交換できないということで、結局、転倒数使えという事かよというオチでした。

そんなこんなで、やっとこさコードを提出してAC。74分24秒で4完です。

提出コード

https://atcoder.jp/contests/abc332/submissions/48396707

E問題

E - Lucky bag

DFSなど使って解けそうかなあという感じだったが、時間が足りずで実装できず。。

解説をみると、結局集合DPだった模様。最近のE問題にしては、大分難易度高めじゃね。

F問題

F - Random Update Query

問題の見た目が、いかにも遅延セグ木を使うという感じだったが、どうやって実装するかがわからんかった。

結局、解説をみると、確かに遅延セグ木が想定だった模様。最近になって、遅延セグ木の問題がよく出てくる感じになったので、こりゃ使い方をちゃんと勉強しないとなあという感じになりました。

G問題

G - Not Too Many Balls

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

これまでの実績

一応、週末2連勝で、再入水に近づくことができました。

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

総括

D問題の誤読が痛かった回でした。最近、この手の凡ミスが多くて、かなりレートの伸び悩みの原因になってる感じがしてます。

振り返ると、どうも問題文を読み飛ばしてしまう変なクセがついてる様な気がしてるので、とりあえず、次回以降はこの辺に注意して取り組んでみることにします。

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