状态压缩(状压dp)

状态压缩(状压dp)

状态压缩(状压dp)

状态压缩(状压dp)

注:在涉及到位运算时,一定要注意位运算的优先级。该加的括号一定要加

定义状态(例如) 求每一种放法的背包价值,状态应该是这n件物品的放与不放的情况。

最容易想到的是开个n维数组,第i个维度的下标如果是1的话代表放第i件物品,0的话代表不放第i件物品;

但是这样很容易造成空间浪费,而且多维数组也不好开;

我们仔细观察就会发现,每件物品有放与不放两种选择;假设我们有5件物品的时候,用1和0代表放和不放

如果这5件物品都不放的话,那就是00000;
如果这5件物品都放的话, 那就是11111;

看到这,我们知道可以用二进制表示所有物品的放与不放的情况;如果这些二进制用十进制表示的话就只有一个维度了。而且这一个维度能表示所有物品放与不放的情况;这个过程就叫做状态压缩;

状态压缩

状压dp

练习题(正在更新)

谢谢

相关文章:

  • 2021-11-10
  • 2021-12-02
  • 2021-10-26
  • 2021-08-06
  • 2021-07-22
  • 2021-09-17
  • 2022-02-26
  • 2021-12-29
猜你喜欢
  • 2021-12-02
  • 2021-12-27
  • 2022-01-05
  • 2021-11-15
  • 2021-06-26
  • 2021-08-25
  • 2021-12-02
相关资源
相似解决方案