状压DP
来源:互联网 发布:em getsel vb 编辑:程序博客网 时间:2024/05/21 21:46
状压DP
知识要点
一般数据很小,暴力又过不了
常用方法
然而并没有
补充一点:1:判断一个数字x二进制下第i位是不是等于1。
方法:if(((1<<(i-1))&x)>0)
2:将一个数字x二进制下第i位更改成1。
方法:x = x| ( 1<<(i-1) )
3:把一个数字二进制下最靠右的第一个1去掉。
方法:x=x&(x-1)
例题
1. 旅行商问题
dp[S][i] 表示经过点的集合为S,当前到达i号结点的最小花费。
S中访问过的为1,未访问为0
dp[S][i] = min{dp[S^(1<<i)][k] + w(k, i)} (k:S&(1<<k) != 0)
2. CodeForces 453B
dp[i][j]表示前i个数达到j状态的最小的结果,j状态表示已经被用过的质数。因为a小于等于30,所以如果某个数超过60,那么选择1一定比它更优,所以我们能够用到的数的质因子也一定不会超过60,也才17个,所以我们只需要每次枚举数,然后通过之前的状态进行转移即可。
3. CDOJ 1296
Dp1[i]表示 这些点连在一起的时候,最少需要多少边。(其实是判断性问题)
dp2[i]表示 这些点连在一起的时候,可以有其他的点也并入,最少需要多少边。
dp3[i]表示 这些集合对应的点连在一起的时候,最少需要多少边
(通过k个城市对,可以分成一些联通的集合 )
dp4[i]表示 这些集合可以相互不连通的时候,最少需要多少边
dp1 à dp2à dp3à dp4
枚举子集
阅读全文
0 2
- 状压dp
- 状压dp
- 状压dp
- 状压DP
- 状压DP
- 状压DP
- 状压dp
- 状压DP
- 状压DP
- 状压dp
- 状压dp
- 状压dp
- 状压DP
- 状压DP
- 状压DP
- 状压DP
- hdu 4336 概率DP 状压DP
- uva 11600 期望dp 状压dp
- 语义分析之一:属性文法
- 货物运输
- List中 remove 方法总结.md
- hadoop的分组实现
- 面向对象语言特性之封装
- 状压DP
- UVA
- BP神经网络(三)——公式推导
- MAC上PyCharm调试Tensorflow的环境安装与配置
- CENTOS 7 安装网易云音乐
- 咸鱼日记12.10——maven
- 在linux中怎么让进程开机自动启动?
- CSS3(七)
- mybatis系列十一:mybatis注解配置