ABC144 バチャ メモ
atcoder.jp
引越し作業でTwitterばっかりやってた頭をリフレッシュ!
A - 9x9
A <= 9 && B <= 9 を見ればいいねB - 81
setとかに入れてやると直感的っぽさがある自分は i で割り切れるかと N / i <= 9 かをみた
C - Walk on Multiplication Table
約数を全列挙するときは だけ回せば十分あとはやると、できます
D - Water Bottle
方程式をときます!(終) 長方形としてみると楽になるかもしれないですE - Gluttony
操作後の を考える。このとき、 が昇順、 が降順になってると最適(どっちも単調増加のところがあると、Aのその2要素をswapすると、必ず得をするため)。
操作前の も、昇順に並べると最適である。
昇順に並んでいる状態なら が必ず作れ、操作回数が最小になる(そもそも が作れる時点で操作回数はどれも変わらない)ためである。
あとは、最小コストを求めればいいが、 となるように を決め打ちすると、 を にするための最小の操作回数が定まり(条件を満たす を最大化すれば良い)、これは単調減少である。そのため、操作回数が 以下になる最小の を見つければ良いので、二分探索を使って を求めることができる。
F - Fork in the Road
このグラフはDAG(Directed Acyclic Graph)である。 だから閉路が存在しないんだね。まず、 頂点 から頂点 までの経路の長さの期待値はどのようにしたら求められるだろうか(メタいことをいうと、DAGだしDPなんだろうな)。
そこで、ある頂点 から頂点 に行くための経路の長さの期待値を求めるとする。
から直接接続されている頂点でかつ、その頂点から頂点 へ向かうことができるものの集合を 、そのような頂点の数を とする。
頂点 の期待値を とすると、
になる。
頂点 に、 の確率でいくため、頂点 の期待値の重みは になる。それらを足していって、最後に に行くためのコスト を追加することで、前述の式が得られる。
より、頂点 から 頂点 へ順に期待値を求めていけば、DPができる。
これにかかる計算量は である。
これを辺を一つ消したものを考慮して全部見ていくと、 となってしまい間に合わない。
ここで、頂点 につながる辺を一つ消すときのことを考える。
dpは右側から求めているので、 である の値は何も変化していないことがわかる。
はできるだけ小さくしておきたいので、 である と繋がっている辺を削除すれば一番小さくなることがわかる。
このような辺は 頂点につき つ存在するので、消すべき辺の候補は 個以下に絞ることができる。
よって、 回試せばよく、 でこの問題を解くことができた。
なんか見積もり2億とかでもいまだとかんたんに通るんだね
ソース
A : https://atcoder.jp/contests/abc144/submissions/10564376B : https://atcoder.jp/contests/abc144/submissions/10564395
C : https://atcoder.jp/contests/abc144/submissions/10564444
D : https://atcoder.jp/contests/abc144/submissions/10564821
E : https://atcoder.jp/contests/abc144/submissions/10566829
F : https://atcoder.jp/contests/abc144/submissions/10568764
感想
やっぱりちょっとやってないだけでも鈍るないろいろな問題が出てくるから楽しいね
Dとか面白かった 高校数学
DPの考え方として、他の値をどう使うとできるのかってところがあって、その使い方に慣れていかないとなーって感じた
まだ、全完ができないセットがたくさんあるので、ちゃんとFの復習をしてちゃんと説いていきたいと思う。