状态压缩
文章平均质量分 56
不吸血的Vampire
这个作者很懒,什么都没留下…
展开
-
poj 1185
状压的第一题: #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 1e8 #define inf -0x3f3f3f3f #define eps 1e-8 #define原创 2014-03-14 23:10:11 · 445 阅读 · 0 评论 -
poj 3254
题意:在N*M的草地上,1表示能放牛,0表示不能放牛,且牛不能相邻,问有多少种放法(一头牛不放也算一种)。。。 #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 1原创 2014-03-15 11:41:38 · 461 阅读 · 0 评论 -
HDU 1074
题意: 有n门课程作业,每门作业的截止时间为D,需要花费的时间为C,若作业不能按时完成,每超期1天扣1分。 这n门作业按课程的字典序先后输入 问完成这n门作业至少要扣多少分,并输出扣分最少的做作业顺序 PS:达到扣分最少的方案有多种,请输出字典序最小的那一组方案 思路: 对于状态压缩其实最难理解的是位运算,这里有几个技巧: 1,判断i状态中是否已经完成了第j个作业原创 2014-03-15 23:12:38 · 493 阅读 · 0 评论 -
HDU 1400 && POJ 2411
题意:求用1*2的矩阵填满n*m的矩阵的方法有多少种; 题解: 状压DP,,,, 1*2的矩阵要么橫着放,要么竖着放,把 橫着放的矩阵标记为 1 1 竖着放的矩阵标记为 0 1 假如现在我们在铺砖 位置(i, j), 并且假设之前的位置已经铺设好的了,在这个位置,我们的选择: 1. 不用铺砖了,可能在(i-1, j)的时刻已经被竖着铺上原创 2014-03-17 22:22:49 · 806 阅读 · 0 评论 -
位运算在状态压缩DP的运用技巧
位运算是既基础又好用的运算方法,它的实用性主要体现在状态压缩DP上,这也是状态压缩DP的难度所在, 如果不了解位运算,状态压缩DP会觉得很难理解。。。 接下来是位运算的实现技巧: 如果要获得 n 的第 i 位的数据(0还是1),判断(n&(1 如果要设置 n 的第 i 位为1,n=(n |(1 如果要设置 n 的第 i 位为0,n=(n &(~原创 2014-03-17 20:46:37 · 1419 阅读 · 0 评论 -
HDU 4856 Tunnels (最短路+状压DP)
题意:给你N*N的网格,‘.’表示可以走,‘#’表示不能走,m条管道,每条管道有起点和终点坐标, Bob每次可以走到相邻的网格花费1s,问Bob走完m条管道要花多少时间;Bob在管道内不计算时间 即计算Bob从管道 i 的出口走到管道 j 的入口的时间Dis(e[i],s[j])的最小和,起点可以任意; 思路:看了题解说是状态压缩DP然后深入理解了下。 首先原创 2014-07-08 21:22:13 · 737 阅读 · 0 评论 -
HDU 4539 郑厂长系列故事——排兵布阵 (状态压缩DP)
中文题,题意不再累赘。 思路:对于第 i 行的放士兵,影响它的只有第 i-1 行和 i-2 行,所以暴力枚举符合这三行的状态 state[i],state[j],state[k]. 接下来就是二进制的巧妙应用了。 具体题解看代码注释!!! #include #include #include #include #include #include #inc原创 2014-08-13 16:23:41 · 530 阅读 · 0 评论 -
HDU 3001 Travelling (三进制状态压缩 DP)
题意:有 n 个city,可以选择任一城市作为起点,每个城市不能访问超过2次, 城市之间有权值,问访问全部n个城市需要的最小权值。 思路:因为每个城市可以访问最多两次,所以用三进制表示访问的状态。 详细见代码注释!!!! #include #include #include #include #include #include #includ原创 2014-08-13 22:50:10 · 683 阅读 · 0 评论