しののブログ

競プロをします

yukicoder 245 A-E 解説・思考過程

writer/testerのみなさんありがとうございました。

yukicoder.me

Eまではサクッと解けた気がします。(WAを山のように出してしまった、ひえぇ)

F・Gやばすぎる…

Fの解説が気になる。こんなの解けるんですね。

A No.1033 乱数サイ

 K個のサイコロを振ると考えればよいんですかね? サンプルを見ながら式変形してたら N/2になってびっくりしました。期待値なのでそれはそうかも。

B No.1034 テスターのふっぴーさん

この問題、コンテスト中じゃなくて普段の精進で出会いたかったですね。

解き方は分かっても実装の前にだいぶ慎重になりました。良問な気がする。

4つの壁までの距離を出しておいて、タマネギの皮を外すみたいに外側から削っておき、壁沿いに (I, J)があるような状態に帰着させて解きました。

C No.1035 Color Box

包除原理

 M種類以下」のペンキで塗り分ける方法を各 Mについて求めて足したり引いたりします。

D No.1036 Make One With GCD 2

連続部分列という問題設定、またある連続部分列が条件を満たしたらそれを左右に延長したものも条件を満たすことから、尺取り法ができそう。

しかし、ある区間でgcd=1として、左端をひとつ右にずらしたらgcdがどうなるかというのは O(1)では計算できない。

セグ木ぺたり(ええ)

これで lを1ずつforループで動かしながら rを適宜右にずらすと答えが出ます。計算量 O(n \log n \log a)

gcdの単位元 0でしたね(毎回ちょっとだけ不安になる)

追記:sliding window aggregationなるものを使うとlogが落とせる。

E No.1037 exhausted

パッと見て最初に浮かぶのは蟻本P73のExpedition(めっちゃ似てる)なんですが、 w_iの処理をどうしたものかとしばらくストールしてしまいました。

各地点での最適な状況はその地点にいるときにはまだわからないけど、 (地点, 残り燃料)について最適化して遷移していけば良さそうなので、DP。実際 O(NV)が入りきります。

 \mathrm{DP}(i, j) = x_i 地点で残り燃料が jのときの最小費用

 x_0 = 0, x_{n+1} = Lとすると楽でした。