持续更新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。