2013年1月8日

【树形DP】【分组背包】【HDU1561】

摘要: 【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid=1561【题目解析】有树形依赖的背包问题。 流传较广的是多叉树转二叉树的DP方法。首先运用“左儿子右兄弟”的方法将多叉树转化为二叉树。这样的话,DP的进程就更加容易。由于是二叉,那么只需要枚举分配给左儿子多少个点,分配给右儿子(右兄弟)多少个点即可。不过需要注意的是枚举给左儿子的时候记得给父亲留一个点,因为是依赖的;枚举给右儿子的时候可以全部给它,因为它和父节点是兄弟关系。 这里要解析的是直接多叉树DP,即直接在原有的树上面进行DP。从递归的角度来考虑:把根节点看成是一个容量为V... 阅读全文

posted @ 2013-01-08 20:22 孤星ぁ紫辰 阅读(441) 评论(0) 推荐(0) 编辑

【DP】【单调队列--多重背包】

摘要: 【01背包模板】 1 #include <iostream> 2 #include <algorithm> 3 4 using namespace std; 5 6 const int Maxv = 1001; 7 int N, V, F[Maxv]; 8 9 int main()10 {11 cin >> N >> V;12 for (int i = 1, w, c; i <= N; i ++)13 {14 cin >> w >> c;15 for (int j = V; j >= w; j --)16 F. 阅读全文

posted @ 2013-01-08 15:08 孤星ぁ紫辰 阅读(1839) 评论(0) 推荐(0) 编辑

导航