![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划 -------- 树形DP
SolarDomo
每天都被头像萌醒
展开
-
求树的重心 POJ 1655、POJ 3107 树形DP
树的重心:在树中删去重心后,剩下的子树的最大子树大小最小,则这个节点为重心POJ 1655:直接求树的重心 思路:递归每个节点的时候,记录一下这个节点所有子树的大小和,然后记录最大子树的大小,维护最小的最大子树大小和相应的节点即可 代码:#include <iostream> #include <cstdio> #include <cstring> #define sf scanf #defin原创 2016-10-18 11:55:32 · 328 阅读 · 0 评论 -
POJ 2342 Anniversary party 树形DP
题目链接:http://poj.org/problem?id=2342入门题: dp[rt][0] = sum{dp[ch][0] + dp[ch][1]} dp[rt][1] = sum{dp[ch][0]} 代码:#include <cstdio> #include <iostream> #include <cstring> #define sf scanf #define pf pri原创 2016-09-08 09:20:27 · 273 阅读 · 0 评论 -
HDU 4003 Find Metal Mineral 树上分组背包
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 题意:一颗有根树N个节点的树和K个机器人,问把所有点都走到的最小花费树上分组背包问题这道题有一个要求就是这个机器人走完一颗树之后,还是可以回到树的根节点的,但也可以又机器人走这颗子树后不回到树根。 但是我们只要仔细的分析一下就可以看出来,假如一颗子树存在又机器人进去后又走回到树根,那么这个树只原创 2016-10-31 18:08:52 · 361 阅读 · 0 评论 -
HDU 4123 Bob’s Race 树形DP + RMQ
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4123代码://#include <bits/stdc++.h> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int maxn = 50000 + 5; int max(int a,int原创 2016-12-05 16:55:27 · 413 阅读 · 0 评论 -
HDU 4812 D Tree 点分治 + 逆元
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5977题目要求在树上找到一条链使得这条链上的点的乘积模mod等于k,求链首尾字典序最小的一条看到题目就能知道是一个点分治的题目,将树按照重心分治之后,就是要统计以重心为根的子树中,过树根的mod为k的链字典序最小的一条,这里的统计必需是在时间复杂度O(n) 以下才能过 代码:#pragma commen原创 2016-12-07 13:02:08 · 381 阅读 · 0 评论