摘要: 因为每种block都有无限多个,所以(x,y,z)等价于是(x,y,z)+(x,z,y)+(y,z,x)这三种block。 然后就像是矩形嵌套那样求解,只不过状态转移方程变成了: dp[i] = max( dp[i], dp[j] + z[i] ); 代码如下: 阅读全文
posted @ 2015-07-15 20:27 hxy_has_been_used 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 算是比较简单的二维费用背包了吧,注意在某一维上要求“装满”。 另外:对于多维费用的背包,最内层的循环可以逆着写,想一想,为什么。 阅读全文
posted @ 2015-07-15 19:43 hxy_has_been_used 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 经典矩形嵌套问题,先排序再求LIS。 需要注意在枚举j的时候x和y都要小于i才行。 也可以根据矩形的嵌套关系建图,然后用拓扑排序+dp或者是逆向建图记忆花搜索来求解。 阅读全文
posted @ 2015-07-15 19:18 hxy_has_been_used 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 对于每门课程,学习的时间不同,收获也不同,在一门课程上花费了两个不同的时间去学习是互斥的,即它们是属于同一个组内的物品,直接做分组背包即可。 需要注意三重循环的顺序不可变! 注:没有要求必须用够m天,即背包可以不满。 阅读全文
posted @ 2015-07-15 16:15 hxy_has_been_used 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 和poj 1463基本一样。 阅读全文
posted @ 2015-07-15 14:05 hxy_has_been_used 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 很简单的树形dp题目,转移方程是: dp[u][0] += dp[v][1]; dp[u][1] += min( dp[v][0], dp[v][1] ); 其中u是v的父亲节点。 也可以用二分图来做。 阅读全文
posted @ 2015-07-15 13:47 hxy_has_been_used 阅读(152) 评论(0) 推荐(0) 编辑