状态压缩
定义 DP 状态的时候,有时不好表示,那么可以直接状压。
基本适用于:
具体地,
比如 true,第 4 列状态为 False。
单行的时空为
for(int i = 1;i <= n; ++i)
for(int j = 0;j < (1 << n); ++j)
if(j 符合条件)
for(int k = 0;k < (1 << n); ++k) // 前一个状态
if(j and k 符合条件)
转移
给出一些技巧:
二进制下,如果保证相邻数位不都为 !(j & (j >> 1))and !(j & (j << 1))。