
状压dp
TIMELIMITE
Time is not enough. I must hurry up !
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hoj 2662 Pieces Assignment 状态压缩dp入门
//hoj 2662 Pieces Assignment //有一个n*m的棋盘(n、m≤80,n*m≤80)要在棋盘上放k(k≤20)个棋子,使得任意两 //个棋子不相邻(每个棋子最多和周围4个棋子相邻)。求合法的方案总数。 // //算是另一个状态压缩dp入门吧 //dp[i][S][j]表示第i行的棋子状态是S(整数的二进制形式,比如5为 // ...101,省略号表示前导0,那一位上是1就原创 2015-04-10 15:36:04 · 1011 阅读 · 0 评论 -
poj 1185 炮兵阵地 状压dp
// poj 1185 炮兵阵地 状压dp // 这题和之前做的棋子的差不多,只是这个比之前的变化了一个条 // 件,这个条件让的我们不得不考虑在这个状态之前的状态,即在 // 一个状态中记录另外一个状态,说的可能有些绕 // 这么说吧: dp[i][S][V]表示第i行状态为S(仍然是二进制的数字 // 表现形式,比如5是101,表示第一列和第三列放炮兵),第i-1行 // 的状态为V(同样是二原创 2015-04-10 19:51:10 · 793 阅读 · 0 评论 -
poj 3311 Hie with the Pie 状压dp
//参考了挑战程序设计第二版的tsp,dp[S][v]表示在已经访问了集合S中的点情况下 //从出发访问剩下的节点并回到0号起点的最少花费dp[V][0]都是0, //从0号节点回到0花费肯定是0, //dp[S][v] = min(dp[S|{u}][u]+d[v][u],dp[S][v]){u不在当前的集合中} //这样我们从[0,0]这个状态开始进行记忆化搜索,就一定能得到我们想要的答案 /原创 2015-04-08 20:25:29 · 775 阅读 · 0 评论 -
poj 3254 Corn Fields 状压dp入门
// poj3254 状压dp入门 // dp[i][S]表示前i行第i行状态为S时放牧的情况 // S为十进制的二进制数形式如5为101表示第一列和第三列放牧的方法数 // 首先dp[0][S]合法的话就是1 // 状态转移方程为dp[i][S] = sigma(dp[i-1][V])(S与V是合法状态) // 最后的结果就是dp[n][S](S为所有的合法状态) // // 刚开始十分傻x的原创 2015-04-14 19:55:39 · 611 阅读 · 0 评论 -
hdu 3001 Travelling TSP变形 三进制状压dp
// hdu 3001 TSP问题的变形 // 这次到每个点最多两次,所以可以用三进制的类推 // dp[S][u]表示当前在u点访问状态为S时所得到的最小的开销 // 采用刷表法,即用当前的状态推出它所能转移的状态 // dp[S][u] 可以到达的状态为dp[S+state[v]][v](dist[u][v]!=inf) // dp[S+state[v]][v] = max(dp[S+stat原创 2015-04-14 23:18:44 · 1066 阅读 · 0 评论 -
uva 10817 Headmaster's Headache 状压dp
// uva 10817 Headmaster's Headache 状压dp // // 解题思路: // // 因为数据范围很小,所以想到状压dp。 // // dp(i,s1,s2) 表示到前i个人,已经一门课只有一个老师教的集合 // 为s1,一门课有两个老师教的集合为s2.则状态转移为 // // dp(i,s1,s2) = min(dp(i+1,s1,s2),dp(i+1,原创 2015-09-14 21:32:31 · 533 阅读 · 0 评论 -
uva1252 Twenty Questions 状压dp
// uva1252 Twenty Questions 状压dp // // 解题思路: // // 状压dp. // // dp[s,a]表示已经问的特征的集合为s,想象中物品的集合为a最少还要问 // 多少次.则状态转移为 // dp[s,a] = min(dp[s,a],max(dp[s+(k),a],dp[s+(k),a+(k)])+1); // 我们已经知道已询问的特征集为原创 2015-09-15 17:40:09 · 483 阅读 · 0 评论