キーエンスプログラミングコンテスト2022(AtCoder Beginner Contest 274) E - Booster (500)
基本的には巡回セールスマン問題を解くbitDPと同じ
既に拾ったブースターの数については状態の中の後半で立っているbitの数から分かるので別で持つ必要は無い
最後に原点に戻ってくる時を考える必要があるのは街のbitが全て立っている状態のみ
それ以外は無視する必要がある
ブースターが出てくることで移動時間が短縮されるので小数で持つ必要があることに注意
$ \mathcal{O}(2^{N+M} (N+M)^2)