2/6
PKU 2573
一番遅い二人を向こう岸に運ぶことを考える。t[1]を最も速い人、t[n]を最も遅い人とする(tはソートされている)。このとき二種類の方法が考えられる。
1. (1, 2)で行く→1が帰ってくる→(n-1, n)で行く→2が帰ってくる
2. (1, n)で行く→1が帰ってくる→(1, n-1)で行く→1が帰ってくる
それぞれかかる時間は
1. t[2]+t[1]+t[n]+t[2] = t[1] + 2*t[2] + t[n]
2. t[n]+t[1]+t[n-1]+t[1] = 2*t[1] + t[n-1] + t[n]
ここで方法1が方法2より速い時の条件を考えると
t[1] + 2*t[2] + t[n] < 2*t[1] + t[n-1] + t[n]
2*t[2] - t[1] < t[n-1]
となる。つまり二番目に遅い人のかかる時間が大きければ方法1を、小さければ方法2を用いれば良い。
PKU 2575
やるだけ。
PKU 2576
dp[i][j] := i人選んでその和をjにできるか
でDP。n/2人選んで作ることのできる和をsとすると、2*s-合計 が最も少なくなるようなsが答。
というかWaterloo local contest はナップサック的DPがお好きなんですかね。
PKU 2577
やるだけ。
PKU 2536
にぶまっちんぐ
PKU 2538
やるだけ。