在x森林裡,上帝建立了生命之樹。
他給每棵樹的每個節點(葉子也稱為乙個節點)上,都標了乙個整數,代表這個點的和諧值。
上帝要在這棵樹內選出乙個非空節點集s,使得對於s中的任意兩個點a,b,都存在乙個點列
\使得這個點列中的每個點都是s裡面的元素,且序列中相鄰兩個點間有一條邊相連。
在這個前提下,上帝要使得s中的點所對應的整數的和盡量大。
這個最大的和就是上帝給生命之樹的評分。
經過的努力,他已經知道了上帝給每棵樹上每個節點上的整數。但是由於不擅長計算,他不知道怎樣有效的求評分。他需要你為他寫乙個程式來計算一棵樹的分數。
51 -2 -3 4 5
4 23 1
1 22 5
思路:樹形dpdp
dp,令d p[
i]
dp[i]
dp[i]以i
ii為根的子樹最大答案。
顯然對於結點u
uu選取子結點為正的dp[
v]
dp[v]
dp[v
]相加轉移即可。
d p[
u]+=
dp[v
](dp
[v
]>0)
dp[u]+=dp[v]\ (dp[v]>0)
dp[u]+
=dp[
v](d
p[v]
>0)
。注意需要初始化ans
=−in
fans=-inf
ans=−i
nf,因為結點的權值可能都為負,這樣答案就是負。
#include
using
namespace std;
typedef
long
long ll;
const
int n=
1e5+
5,m=
2e4+
5,inf=
0x3f3f3f3f
,mod=
1e9+7;
#define pb push_back
ll dp[n]
;int n;
ll ans=
-inf;
vector<
int>e[n]
;void
dfs(
int u,
int fa)
ans=
max(ans,dp[u]);
}int
main()
dfs(1,
0);printf
("%lld\n"
,ans)
;return0;
}
藍橋杯2015省賽B組第2題
2.星系炸彈 在x星系的廣袤空間中漂浮著許多x星人造 炸彈 用來作為宇宙中的路標。每個炸彈都可以設定多少天之後 比如 阿爾法炸彈2015年1月1日放置,定時為15天,則它在2015年1月16日 有乙個貝塔炸彈,2014年11月9日放置,定時為1000天,請你計算它 的準確日期。請填寫該日期,格式為 ...
藍橋杯省賽真題 抽籤
x星球要派出乙個5人組成的觀察團前往w星。其中 a國最多可以派出4人。b國最多可以派出2人。c國最多可以派出2人。那麼最終派往w星的觀察團會有多少種國別的不同組合呢?下面的程式解決了這個問題。陣列a 中既是每個國家可以派出的最多的名額。程式執行結果為 defff cefff cdfff cdeff ...
藍橋杯省賽真題詳解
題目描述 問題描述 小藍給學生們組織了一場考試,捲麵總分為100分,每個學生的得分都是乙個0到100的整數。請計算這次考試的最高分 最低分和平均分。輸入格式 輸入的第一行包含乙個整數n,表示考試人數。接下來n行,每行包含乙個0至100的整數,表示乙個學生的得分。輸出格式 輸出三行。第一行包含乙個整數...