強くなりたい

毎日無意識に生きてて良くない

典型90問 まとめ 011~020

012 - Red Painting(★4)

マスを赤く塗るクエリと赤で塗ったマスが繋がっているかを判定するクエリを処理する問題。

連結判定なのでUnionFindを使う。

その際マス (r,c) を数字に対応づける必要があるが、それは

 \displaystyle
(r,c) \longmapsto rW + c

とすればよい。(これは左上から順にマスをひとつずつ数えていったとき何番目に対応するかを表しており、この対応は単射である。まあW進法と考えれば当たり前だが……)

AC

013 - Passing(★5)

(ある地点Kを経由して1からNまで辿る最短経路) = (1からKまでの最短経路) + (KからNまでの最短経路)
最短経路を求めるにはダイクストラを使えば良い

AC

014 - We Used to Sing a Song Together(★3)

ソートして同じ順位にあるものたちの差を足し上げれば良いことがすぐにわかります。

AC

016 - Minimum Coins(★3)

制約が全探索してくれって言ってるので素直に全探索しましょう。

以下のコードではなるべくループの回数を少なくするために A>B>Cとなるようにしています。

Aのi枚、Bをj枚使うとしたときにN-Ai-Bjが非負でCの倍数ならk = \frac{N-Ai-Bj}{C}とおくと i+j+kが最小値の候補です。これを繰り返します。 AC

018 - Statue of Chokudai(★3)

三角比でゴリゴリ計算すればOK

私はarctanを求める方法で解きました。いろいろな求め方があると思います。

AC

020 - Log Inequality(★3)

誤差に注意しようという問題。

b\log_2 c> \log_2 a c^{b} > aと同値なので後者で判定していく。

AC