DP技巧

持续更新ing

一、区间DP

1.for循环一般第一维枚举区间长度,第二维枚举左端点,第三维枚举中继点。

2.遇到环,将环断链复制两遍。


二、状压DP

1.用单个数表示一个集合,用这个数二进制下的1表示该元素处于集合中,0表示不再。

2.这个数二进制下1的个数就是集合中元素的个数。

3.使用lowbit运算遍历每一个元素,其中lowbit返回的值是2的该元素次幂的值,可以开一个数组存储2的各个幂的值所对应的对数,这个对数即为该元素在集合中的位置。

4.枚举集合中的所有子集:

for(int y=x;y;y=(y-1)&x)//y即为x的子集

5.若集合S的一个子集为A,则S-A可以表示为S^A或S-A。

对不起啊,因为我是一个活在二次元的人,生为野犬,喻世,勿争了吧。
原文地址:https://www.cnblogs.com/YLCHANGE/p/13509982.html