日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷P1122 最大子树和 树形DP初步

發布時間:2023/12/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P1122 最大子树和 树形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。

輸入輸出樣例

輸入 #1復制

7 -1 -1 -1 1 1 1 0 1 4 2 5 3 6 4 7 5 7 6 7

輸出 #1復制

3

說明/提示

【數據規模與約定】

對于60\%60%的數據,有N≤1000N≤1000;

對于100\%100%的數據,有N≤16000N≤16000。

這個題,比較簡單,就是求一顆權值最大子樹的權值,記憶化搜索,每次保留最大權值即可。、

#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; vector<int>E[maxn]; int n,w[maxn],ans1=0; void add(int x,int y) {E[x].push_back(y);E[y].push_back(x); } int dp(int ver,int fa) {int ans=w[ver];for(int i=0;i<E[ver].size();i++)if(E[ver][i]!=fa) ans+=max(0,dp(E[ver][i],ver));ans1=max(ans1,ans);return ans; } int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",w[i]);for(int i=1,x,y;i<=n-1;i++){scanf("%d%d",&x,&y);E[x].push_back(y);//無向圖存 E[y].push_back(x);}dp(1,0); printf("%d\n",ans1);return 0; }

?

總結

以上是生活随笔為你收集整理的洛谷P1122 最大子树和 树形DP初步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。