理論

$\min_{a\in A} f(a)$ を求める問題を考える。

$A_0=A$ と $A_1 \subseteq A_0$があって、 「任意の $a \in A_0$ に対してある $b \in A_1$ が存在して、$f(b) \leq f(a)$ である」 ならば、$\min_{a\in A_0} f(a) = \min_{b\in A_1} f(b)$ が成り立つ。

これを $A_0\supseteq A_1 \supseteq \cdots \supseteq A_k$ と繰り返していって、$\lvert A_k \rvert = 1$ となれば、その唯一の元 $a^$ に対して $f(a^)$ が答えとなる。

貪欲法のよくあるパターンは、このような $A_0\supseteq A_1 \supseteq \cdots \supseteq A_k$ の列を作って(絞り込んでいって)答えを特定していくものである。

「任意の $a \in A_0$ に対してある $b \in A_1$ が存在して、$f(b) \leq f(a)$ である」について。

$a$ から $f(b) \leq f(a)$ となるような $b$ ($b$ にしても損をしないようなもの)を作れるかどうかというのがカギになってくる。

$A_1$ は1番目の要素が確定した集合、$A_2$ は2番目の要素が確定した集合…という形がよく出てくる。

交換しても損をしない

終わる時刻(締め切り)の早い順にやる