樹形DP 洛谷1122 最大子樹和

2022-04-29 02:51:12 字數 2005 閱讀 5912

又是一道樹形dp的入門題,思想非常簡單 然而我最開始還是存了兩個狀態

[傳送門]

小明對數學飽有興趣,並且是個勤奮好學的學生,總是在課後留在教室向老師請教一些問題。一天他早晨騎車去上課,路上見到乙個老伯正在修剪花花草草,頓時想到了乙個有關修剪花卉的問題。於是當日課後,小明就向老師提出了這個問題:

一株奇怪的花卉,上面共連有nn朵花,共有n-1n−1條枝幹將花兒連在一起,並且未修剪時每朵花都不是孤立的。每朵花都有乙個「美麗指數」,該數越大說明這朵花越漂亮,也有「美麗指數」為負數的,說明這朵花看著都讓人噁心。所謂「修剪」,意為:去掉其中的一條枝條,這樣一株花就成了兩株,扔掉其中一株。經過一系列「修剪「之後,還剩下最後一株花(也可能是一朵)。老師的任務就是:通過一系列「修剪」(也可以什麼「修剪」都不進行),使剩下的那株(那朵)花卉上所有花朵的「美麗指數」之和最大。

老師想了一會兒,給出了正解。小明見問題被輕易攻破,相當不爽,於是又拿來問你。

輸入格式:

第一行乙個整數n(1 ≤ n ≤ 16000)n(1≤n≤16000)。表示原始的那株花卉上共nn朵花。

第二行有nn個整數,第ii個整數表示第ii朵花的美麗指數。

接下來n-1n−1行每行兩個整數a,ba,b,表示存在一條連線第aa 朵花和第bb朵花的枝條。

輸出格式:

乙個數,表示一系列「修剪」之後所能得到的「美麗指數」之和的最大值。保證絕對值不超過21474836472147483647。

樣例輸入:

7-1 -1 -1 1 1 1 0

1 42 5

3 64 7

5 76 7

樣例輸出:

如你所見這是一道背景略顯智障非常好的題,我們來簡化一下題目:

給定乙個多叉樹,每個點有乙個權值。現在要做的就是保留或者不保留每個點,並且如果a是b和c的父節點,如果不保留a,那麼b和c也不能保留。

那麼我們需要求的就是最後能夠保留的最大值。

於是最開始我是這麼想的用f[u][0/1]來表示u節點的去留時所在子樹的最大值,然後我弄完之後,因為智障而搞錯了答案的儲存,然後debug後突然想。。。既然0表示不選,那我為什麼還要定義乙個狀態?????

看來是我沙雕了。

那麼既然定義出來了,就非常容易想到**,**如下:

qaq【正在糾結買不買無限正義高達。。。。。。。】

洛谷P1122 最大子樹和(樹形dp dfs)

2020.5.21 萌新自從上次區域賽那題碰壁,就勵志學好樹形dp,先從簡單題練練手。樹形結構,前向星自不用說,觀察給出的資料,在每一層的子問題是剪枝和不剪枝,那肯定是如果對答案貢獻大於零就不剪,小於0就剪掉,所以有如下公式 dp u dp v 0?dp v 0回到問題上,我們的子樹可能不止乙個,那...

P1122 最大子樹和 (樹形DP)

第一次寫樹形dp,找了乙個簡單的題,先熟悉一下套路,雖然自己的這種寫法,過了,可以求到最大的子樹和,但是不能求到每個結點的最大子樹和,只有某一部分的最大子樹和的根,它是正確的,其他結點都是打工仔。遞迴下去,以子樹推當前結點和子樹的最優值,是可以辦到的 情況1 如果當前子樹 0,就不更新 情況2 如果...

洛谷P1122 最大子樹和 (樹狀dp)

小明對數學飽有興趣,並且是個勤奮好學的學生,總是在課後留在教室向老師請教一些問題。一天他早晨騎車去上課,路上見到乙個老伯正在修剪花花草草,頓時想到了乙個有關修剪花卉的問題。於是當日課後,小明就向老師提出了這個問題 一株奇怪的花卉,上面共連有n 朵花,共有n 1條枝幹將花兒連在一起,並且未修剪時每朵花...