状态压缩DP和普通DP唯一的区别就是它所枚举的对象不再是一个整数,而是一个集合,解决的策略就是利用二进制将这个集合压缩成一个整数。
对于该题,dp[s][v]表示:s表示在该城市剩下的车票集合,v表示在城市v,dp表示在该状态的最小话费。
影响决策的因素有一下几个:
1.一共使用哪几个车票(包括数量和种类)
2.当前从哪个城市到哪个城市
3.使用哪个车票完成两个城市的转移
所以一共需要...
分类:
其他好文 时间:
2015-05-04 18:04:42
阅读次数:
136
立体八数码,双向BFS+二进制状态压缩,Very Hard.
分类:
其他好文 时间:
2015-05-04 13:45:42
阅读次数:
376
http://acm.hdu.edu.cn/showproblem.php?pid=4758
Problem Description
On the beaming day of 60th anniversary of NJUST, as a military college which was Second Artillery Academy of Harbin Mil...
分类:
其他好文 时间:
2015-05-04 10:05:38
阅读次数:
186
题目描述sum[i, j, s] 表示第 i 行第 j 个位置以前(第1到第 i 行,第 i 行第1列到第 j – 1 列)已经全部填满,在状态s的约束下要填满剩余位置的可行方案数。s 是压缩表示的第 i 和第 i + 1 行蛋糕放置状况,sj = (1 #include using namespa...
分类:
其他好文 时间:
2015-05-03 23:36:25
阅读次数:
195
位运算是状态压缩DP的基础。C/C++中的位运算算符(按优先级排序):! ~ (bitwise NOT) 按位非 ~x* / %+ -> >= > (bitwise left shift and right shift) 按位左移、右移 x>>y x>>=y== !=& (bitwise AND) ...
分类:
其他好文 时间:
2015-05-03 17:25:35
阅读次数:
94
给定n个顶点做成的图,要求从顶点0出发经过所有点一次然后回到0点的一条权值之和最小的一条路的权值
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 100000000
using namespace std;
struc...
分类:
其他好文 时间:
2015-05-02 09:46:02
阅读次数:
151
首先比较容易想到是状态压缩DP令$f[S]$表示选取了集合$S$以后,已经送了最少次数cnt且当前电梯剩下的体积rest最大(即$f[S]$是一个二元组(cnt, rest))于是$f[S] = min_{i \in S} f[S - {i}] + v[i]$$11 #include 12 13 ....
分类:
其他好文 时间:
2015-05-01 22:30:27
阅读次数:
230
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 100000000us...
分类:
其他好文 时间:
2015-05-01 09:25:02
阅读次数:
131
Collect More JewelsTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5345Accepted Submission(s): 11...
分类:
其他好文 时间:
2015-04-30 14:08:23
阅读次数:
136
在空间中的n(n为偶数)个点,配成n对,然后使得每一个点在一个点对中。所有的点对的距离之和最小
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 100000000
using namespace std;
int n;...
分类:
其他好文 时间:
2015-04-30 10:46:30
阅读次数:
118