解法
制約がbitDPをしろと言っているので、bitDPをします。
現在開けた宝箱の状態が
のときに、そこからかかる費用の最小値
とします。
を整数型の変数1つで表し、2進数の桁に宝を割り振り、0:まだ開いていない、1:開いている、とすると
初期値はで、答えは
です。
を求めることについて考えると、
状態がの際に
番目の鍵を使うと、
(ただし、
は
番目の鍵を使用して開けることのできる宝箱の集合)
となります。
鍵は種類あり、これを全部試せばよく、
となります。のパターンは注意する必要があり、スルーしなければなりません。
あとはこれを繰り返せば答えが求まります。
なのですが、
を前計算してあげると
になります(自分は前計算してないです)
感想
久々にbitDPを見た気がします…
やっぱりbitDPに関しては再帰で書くのが個人的には好きです