0%
SOSdp是关于集合的特殊动态规划
-
子集和dp:dp(st,i) 表示集合st 的最后i 位变化的所有子集的贡献
-
第i 位为0 ,dp(st,i)=dp(st,i−1)
-
第i 位为1 ,dp(st,i)=dp(st,i−1)+dp(st∧(1<<i),i−1)
-
压缩掉一维,变成如下代码
1 2 3 4
| for (int j = 0; j < n; j++) for (int i = 0; i < 1 << n; i++) if (i >> j & 1) f[i] += f[i ^ (1 << j)];
|