洛谷P1122 最大子樹和

2022-05-03 16:15:27 字數 2152 閱讀 9013

提交該題 討論

題解記錄

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

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

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

輸入格式:

輸入檔案maxsum3.in的第一行乙個整數n(1 ≤ n ≤ 16000)。表示原始的那株花卉上共n 朵花。

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

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

輸出格式:

輸出檔案maxsum3.out僅包括乙個數,表示一系列「修剪」之後所能得到的「美麗指數」之和的最大值。保證絕對值不超過2147483647。

輸入樣例#1:

7

-1 -1 -1 1 1 1 0

1 42 5

3 64 7

5 76 7

輸出樣例#1:

3
【資料規模與約定】

對於60%的資料,有n≤1000;

對於100%的資料,有n≤16000。

思路是樹形dp沒問題,不知道為什麼w了裡2個點

#include#include

using

namespace

std;

#define n 21001

intvis[n],u[n],head[n],next[n];

int n,w[n],f[n*40

];int tot,res=-0x3f3f3f3f

;void bianbiao(int x,int

y)int tree_dp(int

x) }

res=max(res,f[x]);

return

f[x];

}int

main()

for(int i=1,x,y;i)

vis[

1]=1

; tree_dp(1);

printf(

"%d\n

",res);

return0;

}

抄上題解的ac**

#include#include

#include

using

namespace

std;

#define n 16001

int n,w[n],f[n],vis[n]=;//

f陣列存放以該節點出發的最大子數和,vis表示是否訪問過該節點

vectore[n];//

用vector儲存圖

int result=-0x3f3f3f3f

;int tree_dp(int

x) }

result=max(result,f[x]);//

記錄答案(最大的f[x])

return f[x];//

返回當前子樹最大和

}int

main()

for(int i=1;i//

儲存int

t1,t2;

scanf(

"%d%d

",&t1,&t2);

e[t1].push_back(t2);

e[t2].push_back(t1);

}vis[

1]=1;//

每個結點都連通的無根樹,所以其實從哪個結點出發都可以

tree_dp(1

); printf("%d

",result);

return0;

}

P1122 最大子樹和

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

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

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

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

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