动态规划算法总结

一些心得

1.对于一些不好处理,不好得到的值,可以将其直接存入状态中枚举,加一维。

2.dp并不一定每一个转移都是最优的,只要最优状态一定在dp数组中存在,且一定会参与转移就行了。

状压dp

1.枚举 k 的子集,有一个技巧是

for(int p=k;p!=0;p=(p-1)&x){
    ......
}

证明:显然,每次-1的话会使他当前最后一个1所在的位置变成0,并使后面的都变成1。(....100 \(\rightarrow\) ....011)。去一遍与之后,所有k中为0的位置又会重新变成0。后面哪些为1的位置又会重新变成1。所以这样就能枚举到所有的子集且不会重复。

posted @ 2023-07-14 11:17  shAdomOvO  阅读(49)  评论(0)    收藏  举报