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。

posted @ 2020-08-15 19:24  樱洛CHANGE  阅读(157)  评论(2编辑  收藏  举报