状态压缩DP
limchiang
这个作者很懒,什么都没留下…
展开
-
状态压缩DP 第一题
题目链接 题意:一块 m * n 的土地 (1 ≤ m ≤ 12; 1 ≤ n ≤ 12),给出其每个方块的贫瘠情况,现要在其上栽种玉米,要求任何两块栽种玉米的地方不能有相邻的边,问玉米的栽种方法一共有几种(一块地都不栽种也属于方法的一种)? #include #include #include using namespace std; #define INF 2048 #defin原创 2013-02-24 15:45:06 · 257 阅读 · 0 评论 -
poj 1185 炮兵阵地
题目链接 题意:在N*M的网格地图上部署炮兵部队。地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域。炮兵的攻击范围不受地形的影响。原创 2013-02-27 14:39:44 · 942 阅读 · 2 评论 -
poj 2411 & 编程之美 4.2 瓷砖覆盖地板
题目链接 题意:用 1 * 2 的瓷砖覆盖 n * m 的地板,问共有多少种覆盖方式? 思路:用2进制的01表示不放还是放,第i行只和i-1行有关,枚举i-1行的每个状态,推出由此状态能达到的i行状态:如果i-1行的出发状态某处未放,必然要在i行放一个竖的方块,所以我对上一行状态按位取反之后的状态就是放置了竖方块的状态。然后用dfs搜索在i行放横着的方块的所有可能,并且把这些状态累加上i-原创 2013-02-27 22:00:32 · 3046 阅读 · 2 评论 -
poj 1170 二解 之 六进制状态压缩DP
题目链接 题意“:有 b种商品 (0 用压缩状态表示商品的数量 #include #include #include using namespace std; /** 一共有五种商品 */ #define nMAX 6 /** 六进制基数数组,用六进制是因为每种商品的个数在0 ~ 5 */ const int base[5] = { 1, 6, 36, 216, 1296 }原创 2013-03-01 21:51:33 · 272 阅读 · 0 评论