Use bitmask DP (dynamic programming) when:
You need to track which elements from a small set () have been used.
The problem involves permutations, matchings, or visiting all items.
Brute force is but is acceptable. Signals: "visit all cities exactly once", "assign workers to tasks", "partition into subsets". If , is too large. million is fine. million is borderline.