628.1

やるだけセットだったそうです。

250

整数Nが与えられるので、N=M^(Mの約数の数)なる最小のMを答えよ、という問題。


Nは2以上なので、約数の個数が1個という状況はあり得ない。ということで、2以上の根を拾ってきて(ここ間違えた)、後は約数の数をループするだけの簡単なお仕事。が、別に10^9ループくらいまでは通るらしい。気持ち悪い。

500

ノードのMAXまたは和を取る二分木が与えられる。各ノードに数字を割り当てて、最終的にルートにアサインされるスコアを最大化せよ、という問題。


MAXを取ると、片側が完全に死んで、和を取ると両方が生き残る。という感じなので、取り敢えずアサインは後回しにして、最終的に生き残るノードの個数を最大化するような割り当てを考えれば良さそう。たとえばMAX取るなら、子がK個の和かM個の和の比較になるはずなので、大きい方を取る、和の場合は何も考えずに個数を取る。で、最後にルートにアサインできる個数が分かれば、数値を大きい方から適当に拾ってやるだけ。

1000

なんかN個あるステージを全部クリアして、最適にM点取って終わるために必要なプレイ回数の期待値を答えよ、という問題。各ステージでは1点または2点取れるとして、その点数の取れる確率が与えられる。


うまいことソートして適当にDPすれば通るらしい。まじめに数式立てて線形計画法するのかと思ったが、そんなことはないらしい。ふ〜ん。