Toy と帽子と ADP BE

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

AtCoder Beginner Contest 230

5完。スランプから脱却の兆し?相変わらず精進する暇はないので自分としては何も変わってないのですが・・・。

各問題

A - AtCoder Quiz 3

Nが10未満なら"AGC00"と'N'を出力、Nが42未満なら"AGC0"と'N'を出力、42以上なら"AGC0"と'N + 1'を出力します。

あ、桁合わせはformat stringでやるほうがよさそうです。

B - Triple Metre

Sが高々10文字しかなく、Tは3文字でワンセットの繰り返しなので、十数文字分のTを作ってそこにSが含まれるかどうかを判定すればよいです。

自分はそれをすぐに思いつかず、一文字ずつ愚直に条件に合うかどうか判定する処理を書いたので無駄に時間をかけてしまいました。

C - X drawing

(A + k, B + k) というのはいわば傾き-1の直線で(A + k, B - k) というのは傾き1の直線です。また、k=0のとき(A, B)を通ります。

ということで(A, B)を通る傾き1または-1の直線上にあるマスは黒く塗られているとなります。

ちなみに、前半にあるmaxとかminの条件は、座標が1からNの中にちょうど収まっていることを示すもので、上記の2つの直線上にありさえすれば(解答として図示する範囲内では)常に塗られていると考えてよい、ということになります。

D - Destroyer Takahashi

rでソートして、(まだ壊れてない壁のうちで)最初に見つかったrからd - 1の列にパンチを食らわすのが最適です。

いかにも区間スケジューリング問題っぽい見た目をしているので、すぐ気づけました。

E - Fraction Floor Sum

例えば10のとき、2で割ると5ですから、6から10までで割ると商は1であることがわかります。3で割ると3ですから、4から5までで割ると商が2であることがわかります。

これを繰り返していけばある程度まで詰めることができます。そして、1012を2で割ると106なので、多くとも106まで詰めてしまえばよいことがわかります。

F - Predilection

さっぱりわからず・・・。

まとめ

DもEも、何度も何度も見たパターンの問題なので、さすがに精進不足でもなんとかなりました。(Cの方が悩んだ・・・)

無事水色復帰で明日のAGCはめでたくRatedで参加できますが、Unratedを選択できるようになったためどうするか悩みどころです?!

f:id:mdstoy:20211203225859p:plain