531.1
500にトラップがあった模様?
300
N個のものから、全部一回以上使い、使ったらM回は休ませて、P回のシーケンスを作る方法は何通りあるか答えよ、という問題。
全部一回以上という条件を無視すると、比較的簡単にできるので、後は、N個でそれやったところからN-1個でそれやったものを除去して、除去しすぎたN-2個でそれやったものを...とやると良い。
想定解法は、使った個数を覚えておくDPみたい。使ったものから選択する場合はM回制約があるけれど、そうでない場合はその制約がないとかどうとか。
500
見てない。
1000
積んであるブロックの山がいくつかある。二つの山を指定して、それらの山にあるブロックを他の山に移動させるときの最小コストを求めよ、という問題。コストは山間の距離と山の高さで決まる。
取り敢えず二つの山を切り崩すときに、両方の山から出てきたブロックを受け取る山は高々一つなので、それがどこかを限定して考える。後はその山にどうやって割り当てるかを色々なパターン試すだけ...(では多分網羅し切れていない...。)