樹上dp
給出一棵樹,上面有權值, 求這個數的子樹的最大權值和。
模板題,就是樹上dp。
可以想到只要這個樹的子樹的權值大於0就可以選擇,即加上這個權值。
所以這個dp的轉移方程是 \(f_i=\sum_^nf_[}>0]\)
其中 \(n\) 表示這個子樹大小,\(a_i\) 表示這個子樹的子節點。
#include using i64 = long long;
constexpr int n = 16010;
struct node edge[n << 1];
int head[n + 1], siz;
inline void add(int from, int dis)
int f[n + 1];
int main()
for (int i = 1; i < n; i++)
int ans = -2147483647;
std::function dfs = [&](int u, int fa)
} ans = std::max(ans, f[u]);
}; dfs(1, 0);
std::cout << ans << std::endl;
return 0;
}
最大子樹和
題目描述 小明對數學飽有興趣,並且是個勤奮好學的學生,總是在課後留在教室向老師請教一些問題。一天他早晨騎車去上課,路上見到乙個老伯正在修剪花花草草,頓時想到了乙個有關修剪花卉的問題。於是當日課後,小明就向老師提出了這個問題 一株奇怪的花卉,上面共連有n 朵花,共有n 1條枝幹將花兒連在一起,並且未修...
P1122 最大子樹和 題解
同步 原題鏈結 簡要題意 給定一棵 n nn 個節點的樹,有點權,求其中最大的連通塊之和。資料範圍 n 1.6 1 04 n leq 1.6 times 10 4 n 1.6 104.很顯然,考慮用樹形 dp text dp 解決此題。f uf u fu 表示以 u uu 為根的子樹中包含 u uu...
P1122 最大子樹和 題解
csdn同步 原題鏈結 簡要題意 給定一棵 n 個節點的樹,有點權,求其中最大的連通塊之和。資料範圍 n leq 1.6 times 10 4 很顯然,考慮用樹形 text 解決此題。f u 表示以 u 為根的子樹中包含 u 節點的答案。則易得 f u a u max u max f v 0 時間複...