--- id: dp-bitmasks title: "Dynamic Programming on Bitmasks" author: Michael Cao prerequisites: - Bit Operations - Gold - Introduction to Dynamic Programming description: DP problems that require iterating over subsets. --- import { Problem } from "../models"; export const metadata = { problems: { general: [ new Problem("CSES", "Hamiltonian Flights", "1690", "Easy", false, ["Bitmasks"], ""), new Problem("CSES", "Elevator Rides", "1653", "Normal", false, ["LCA"], ""), ], } }; Has not been the solution to any platinum problem, but appeared in old gold and can be used for subtasks. ## Tutorial - [PAPS 9.4](https://www.csc.kth.se/~jsannemo/slask/main.pdf) - CPH 10 (Bit manipulation), 19.2 (Hamiltonian Paths) - [Dynamic Programming Over Subsets (Codeforces)](https://codeforces.com/blog/entry/337) - [Dynamic Programming and Bit Masking (HackerEarth)](https://www.hackerearth.com/practice/algorithms/dynamic-programming/bit-masking/tutorial/) ## Problems - [Old Gold - Moovie Moving](http://www.usaco.org/index.php?page=viewproblem2&cpid=515) - [AC Matching](https://atcoder.jp/contests/dp/tasks/dp_o) - [CF Square Subsets](https://codeforces.com/contest/895/problem/C) - [CF Guards in the Storehouse](https://codeforces.com/problemset/problem/845/F) - [Kattis Cat & Mice](https://open.kattis.com/problems/catandmice) [](66) - plus a bit of geometry