周中训练笔记21
来源:互联网 发布:美工刀架规格 编辑:程序博客网 时间:2024/06/14 20:02
终于考完数据库了,开始全力以赴的学习状压DP了,但是我发现状压DP主要使用位运算实现,这块有点搞不太懂。
所谓状压就是把每一个元素的选取与否对应到一个二进制位里,从而把状态压缩成一个整数,方便了计算和维护。
至于解法需要保存一定的状态数据,每个状态数据通常情况下是可以通过2进制来表示的。这就要求状态数据的每个单元只有两种状态,比如说棋盘上的格子,放棋子或者不放,或者是硬币的正反两面。这样就可以用0或者1来表示状态数据的每个单元,而整个状态数据就是一个0、1组成的二进制数。
找了一些状压DP常用的位运算:
1、对x取反:~x
2、x+1(x为偶数):x|1
3、2x:1<<x
4、2−x:1>>x
5、x的对应值(例如0对1,2对3,8对9):x^1
6、构造0~n-1位二进制数全部为1:(1<<n)-1
7、构造形如10,100,100000即[0, k-1]全部为0,[k,k]为1,这样的二进制数:1<<(k-1)
状压DP常用:
1、将a的第k位修改为1:a |= 1<<k;
2、将a的第k位修改为0:a &= ~(1<<k);
3、取第k位:a>>k & 1;
阅读全文
0 0
- 周中训练笔记21
- 周中训练笔记
- 周中训练笔记1
- 周中训练笔记2
- 周中训练笔记3
- 周中训练笔记5
- 周中训练笔记7
- 周中训练笔记8
- 周中训练笔记9
- 周中训练笔记10
- 周中训练笔记12
- 周中训练笔记13
- 周中训练笔记14
- 周中训练笔记15
- 周中训练笔记+Uva10791
- 周中训练笔记16
- 周中训练笔记17
- 周中训练笔记18
- ios-设置navigationBar和tabBar的样式
- 2.dubbo服务注册与发现
- bzoj3697 采药人的路径
- 叉乘判两线段是否相交
- C++常量---初识
- 周中训练笔记21
- 双目单目深度估计 论文总结
- 编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
- 温度的识别
- SpringBoot项目中使用redis缓存
- 网站访问高峰之后,如何回收已占用的swap分区
- NEC的红外编码!
- Retrofit请求方式
- 使用ApkTool分析apk文件(windows)