背包dp

状压dp

常见集合处理

子集枚举

for (int s = init_sta; s >= 0; s = init_sta & (s - 1))

预处理全状态数值

// 以求和为例
for (int i = 0; i < maxbit; i++)
{
    int h = 1 << i;
    int v = a[i];
    for (int j = 0; j < h; j++)
    {
        sum[h | j] = sum[j] + v;
    }
}