SoundHound Programming Contest 2018 Masters Tournament 本線 B - Neutralize
解法
貪欲ができないか考えます.
ある薬品を0にしたいときはK個を巻き込む必要があります. また, 個以上の区間を0にしたいときはこれを繰り返すことで実現することができます.
しかし, サンプルケースを見てみるとこれは厳しそうであることがわかります.
最適解が貪欲に求まりそうにないので, 最適解を仮定してDPをすることになります.
DPをするにあたって必要な保持状態は、まず
- 見ている薬の番号(1からN)
が必要です. 他に必要なものは,
- 見ているインデックスを右端としてK個選び, 0にしたかどうか(True or False)
です.
この2つを規定すると,
基底
感想
なかなかに大きい制約なので DPはなかなか発想できません.