模版 最大子樹和 題解

2022-09-20 20:12:24 字數 669 閱讀 2070

樹上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 時間複...