随笔分类 -  动态规划之状压dp

摘要:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 第一眼看成k皇后问题了,仔细一看原来是状压dp,dp【i】【j】【k】i是滚动数组压缩形式,j是上一层的状态,k是已经用过的国王数,那么转移很明显, 阅读全文
posted @ 2018-04-14 14:38 walfy 阅读(179) 评论(0) 推荐(0)
摘要:先floyd预处理一遍dis,枚举所有状态,dp[ i ] [ j ]表示 以 j 为终点的状态 i 使用最小的时间 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector 阅读全文
posted @ 2017-08-15 12:41 walfy 阅读(258) 评论(0) 推荐(0)
摘要:枚举灯的所有可能状态(亮或者不亮)(1<<20)最多可能的情况有1048576种 dp【i】表示 i 状态时灯所能照射到的最远距离(i 的二进制中如果第j位为0,则表示第j个灯不亮,否则就是亮) 当i&(1<< j)时代表第i个状态灯j不亮,此时可由状态i转移到状态 i ^ ( 1 << j) 即d 阅读全文
posted @ 2017-08-14 19:27 walfy 阅读(241) 评论(0) 推荐(0)
摘要:题意:给一个图,1是可以放,0是不能放,可以放的地方放的不能相邻,求所有情况 题解:状压dp 参考博客:http://www.tuicool.com/articles/JVzMVj #include<map> #include<set> #include<cmath> #include<queue> 阅读全文
posted @ 2017-05-13 16:01 walfy 阅读(135) 评论(0) 推荐(0)
摘要:状压dp第一题:很多东西没看懂,慢慢来,状压dp主要运用了位运算,二进制处理 集合{0,1,2,3,....,n-1}的子集可以用下面的方法编码成整数 像这样,一些集合运算就可以用如下的方法来操作: 1.空集....................0 2.只含有第i个元素的集合{i}........ 阅读全文
posted @ 2017-05-12 14:19 walfy 阅读(196) 评论(0) 推荐(0)