[转]树形DP题集
转载自 以太论
最终编辑 以太论
树形DP
http://acm.hdu.edu.cn/showproblem.php?pid=2196
向下搜一遍,向上搜一遍
http://acm.hdu.edu.cn/showproblem.php?pid=1561
对每一个节点进行一次背包,好题啊,两个DP树形和背包结合的
http://acm.hdu.edu.cn/showproblem.php?pid=1011
这道是当年省赛的压轴题,但是感觉和上一道差不多,一样的难度,唯一不同的就是这个是无向图(我由于思维惯性拿来当单向图作,纠结了好久。。。)
树形+背包+临街表
下边是从天涯空间里找出来的练习
http://acm.pku.edu.cn/JudgeOnline/problem?id=3345
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201
http://acm.pku.edu.cn/JudgeOnline/problem?id=3107
http://acm.pku.edu.cn/JudgeOnline/problem?id=1655
http://acm.pku.edu.cn/JudgeOnline/problem?id=2378
http://acm.pku.edu.cn/JudgeOnline/problem?id=3140
http://acm.hdu.edu.cn/showproblem.php?pid=2242
http://acm.timus.ru/problem.aspx?space=1&num=1018
http://acm.pku.edu.cn/JudgeOnline/problem?id=1947
http://acm.pku.edu.cn/JudgeOnline/problem?id=2057
http://acm.pku.edu.cn/JudgeOnline/problem?id=2486
http://acm.pku.edu.cn/JudgeOnline/problem?id=1848
http://acm.pku.edu.cn/JudgeOnline/problem?id=2152
http://acm.sgu.ru/problem.php?contest=0&problem=134
hdoj 1561 The more, The Better http://acm.hdu.edu.cn/showproblem.php?pid=1561
第一个真正意义上的树形DP
树形DP + 01 背包
先进行树的遍历,要求只有父亲取了,儿子才能取,于是对于该结点的每个儿子进行一次
01 背包,比如该结点的某个儿子取0 1 2 3 4 ... k 个的最优值已经算出来了,
那么这个数值便可以看做是01 背包的容量,然后用二维数组来储存最优解,最优解表示权值
容量逆序循环表示01 背包,正序就成了完全背包,还有一点状态转移的时候如果先前状态的容量为0,那么它
不能用来状态转移,因为父亲结点必须选,所以最小的状态转移满足条件必须是容量不等于0,而且转移到的
状态必须大于1,原因还是因为父亲结点必须选。
pku 3345 Bribing FIPAhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3345
第二个 树形DP
和HDOJ 1561 类似,不过条件不一样,但是可以套用
树形DP + 01背包 的模式,只不过一些细节处理一下:
1. 最后答案求的是at least m,所以还要线性扫一遍最小值
2. 选择0个城市的最优值永远是0
3. 处理输入的时候看起来有点麻烦,其实真正写起来也不过如此了
zju 3201 Tree of treehttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201
很早就想做hdu的1561那题,一直想不出,就没深入下去,没想到前几天浙大月赛就出了一道原题,可以说是一模一样,哎~~没办法,只能学了。这题枚举了一下根,然后每个都进行树形DP,不过就这么过了,不知道不枚举能不能过……
pku 3107 Godfatherhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3107
dfs或bfs一次建立父子关系并且统计每个结点以及它的子孙一共有多少个点,然后枚举每个点被删掉的情况进行判断即可。
pku 1655 Balancing Act http://acm.pku.edu.cn/JudgeOnline/problem?id=1655
同上
pku 2378 Tree Cuttinghttp://acm.pku.edu.cn/JudgeOnline/problem?id=2378
同上
pku 3140 Contestants Divisionhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3140
由于该图不是一颗树,所以首先要将一些块压缩成点,所谓块就是没有割点的分量,于是只要求出割边,然后删除,之后对整个图进行Floodfill,得到的连通分量再用割边补图,得到的图一定是一棵树,然后就可以树形DP了。
hdoj 2242 考研路茫茫——空调教室http://acm.hdu.edu.cn/showproblem.php?pid=2242
上面那题的加强版,就是要再考虑一个平行边,平行边非割边
ural 1018http://acm.timus.ru/problem.aspx?space=1&num=1018
pku 1947http://acm.pku.edu.cn/JudgeOnline/problem?id=1947
pku 2057 http://acm.pku.edu.cn/JudgeOnline/problem?id=2057
pku 2486 http://acm.pku.edu.cn/JudgeOnline/problem?id=2486
pku 1848 http://acm.pku.edu.cn/JudgeOnline/problem?id=1848
pku 2152 http://acm.pku.edu.cn/JudgeOnline/problem?id=2152
最终编辑 以太论
树形DP
http://acm.hdu.edu.cn/showproblem.php?pid=2196
向下搜一遍,向上搜一遍
http://acm.hdu.edu.cn/showproblem.php?pid=1561
对每一个节点进行一次背包,好题啊,两个DP树形和背包结合的
http://acm.hdu.edu.cn/showproblem.php?pid=1011
这道是当年省赛的压轴题,但是感觉和上一道差不多,一样的难度,唯一不同的就是这个是无向图(我由于思维惯性拿来当单向图作,纠结了好久。。。)
树形+背包+临街表
下边是从天涯空间里找出来的练习
http://acm.pku.edu.cn/JudgeOnline/problem?id=3345
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201
http://acm.pku.edu.cn/JudgeOnline/problem?id=3107
http://acm.pku.edu.cn/JudgeOnline/problem?id=1655
http://acm.pku.edu.cn/JudgeOnline/problem?id=2378
http://acm.pku.edu.cn/JudgeOnline/problem?id=3140
http://acm.hdu.edu.cn/showproblem.php?pid=2242
http://acm.timus.ru/problem.aspx?space=1&num=1018
http://acm.pku.edu.cn/JudgeOnline/problem?id=1947
http://acm.pku.edu.cn/JudgeOnline/problem?id=2057
http://acm.pku.edu.cn/JudgeOnline/problem?id=2486
http://acm.pku.edu.cn/JudgeOnline/problem?id=1848
http://acm.pku.edu.cn/JudgeOnline/problem?id=2152
http://acm.sgu.ru/problem.php?contest=0&problem=134
hdoj 1561 The more, The Better http://acm.hdu.edu.cn/showproblem.php?pid=1561
第一个真正意义上的树形DP
树形DP + 01 背包
先进行树的遍历,要求只有父亲取了,儿子才能取,于是对于该结点的每个儿子进行一次
01 背包,比如该结点的某个儿子取0 1 2 3 4 ... k 个的最优值已经算出来了,
那么这个数值便可以看做是01 背包的容量,然后用二维数组来储存最优解,最优解表示权值
容量逆序循环表示01 背包,正序就成了完全背包,还有一点状态转移的时候如果先前状态的容量为0,那么它
不能用来状态转移,因为父亲结点必须选,所以最小的状态转移满足条件必须是容量不等于0,而且转移到的
状态必须大于1,原因还是因为父亲结点必须选。
pku 3345 Bribing FIPAhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3345
第二个 树形DP
和HDOJ 1561 类似,不过条件不一样,但是可以套用
树形DP + 01背包 的模式,只不过一些细节处理一下:
1. 最后答案求的是at least m,所以还要线性扫一遍最小值
2. 选择0个城市的最优值永远是0
3. 处理输入的时候看起来有点麻烦,其实真正写起来也不过如此了
zju 3201 Tree of treehttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201
很早就想做hdu的1561那题,一直想不出,就没深入下去,没想到前几天浙大月赛就出了一道原题,可以说是一模一样,哎~~没办法,只能学了。这题枚举了一下根,然后每个都进行树形DP,不过就这么过了,不知道不枚举能不能过……
pku 3107 Godfatherhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3107
dfs或bfs一次建立父子关系并且统计每个结点以及它的子孙一共有多少个点,然后枚举每个点被删掉的情况进行判断即可。
pku 1655 Balancing Act http://acm.pku.edu.cn/JudgeOnline/problem?id=1655
同上
pku 2378 Tree Cuttinghttp://acm.pku.edu.cn/JudgeOnline/problem?id=2378
同上
pku 3140 Contestants Divisionhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3140
由于该图不是一颗树,所以首先要将一些块压缩成点,所谓块就是没有割点的分量,于是只要求出割边,然后删除,之后对整个图进行Floodfill,得到的连通分量再用割边补图,得到的图一定是一棵树,然后就可以树形DP了。
hdoj 2242 考研路茫茫——空调教室http://acm.hdu.edu.cn/showproblem.php?pid=2242
上面那题的加强版,就是要再考虑一个平行边,平行边非割边
ural 1018http://acm.timus.ru/problem.aspx?space=1&num=1018
pku 1947http://acm.pku.edu.cn/JudgeOnline/problem?id=1947
pku 2057 http://acm.pku.edu.cn/JudgeOnline/problem?id=2057
pku 2486 http://acm.pku.edu.cn/JudgeOnline/problem?id=2486
pku 1848 http://acm.pku.edu.cn/JudgeOnline/problem?id=1848
pku 2152 http://acm.pku.edu.cn/JudgeOnline/problem?id=2152