一日毎に復旧度をシミュレーションすればよさそう。タイプのサービスについて優先度付きキューを用意しておいて、復旧したサービスは追加して、期限切れになったサービスは削除すればよい。全体の流れとしては
- 今日の復旧度を記録する
- から期限切れになったサービスを削除する
- 今日復旧したサービスを加える
- 復旧度を更新する
を繰り返すことになるが、4の更新の仕方が問題になる。タイプ毎にわけて考える:
タイプのサービス: 復旧度の増分はの長さに等しい。
タイプのサービス: 復旧度の増分が一日毎にの長さだけ増える。
タイプのサービス: 復旧度の増分の増分が一日毎にの長さだけ増える。[1]
これらをそのままシミュレーションすればよい。
解説を読んだ。の式をみたいに展開してしまえば、二次関数の係数の増減だけでシミュレーションできるらしい。ぜんぜん持ってない考え方だった。
だから、1つのサービス毎に、復旧度の増分の増分が2ずつ増えていく。 ↩︎