生命之樹 樹形DP 藍橋

2021-10-04 02:59:18 字數 918 閱讀 9011

原題:

在x森林裡,上帝建立了生命之樹。

他給每棵樹的每個節點(葉子也稱為乙個節點)上,都標了乙個整數,代表這個點的和諧值。

上帝要在這棵樹內選出乙個非空節點集 s,使得對於 s 中的任意兩個點 a,b都存在乙個點列 使得這個點列中的每個點都是 s 裡面的元素,且序列中相鄰兩個點間有一條邊相連。

在這個前提下,上帝要使得 s 中的點所對應的整數的和盡量大。

這個最大的和就是上帝給生命之樹的評分。

經過 atm 的努力,他已經知道了上帝給每棵樹上每個節點上的整數。

但是由於 atm 不擅長計算,他不知道怎樣有效的求評分。

他需要你為他寫乙個程式來計算一棵樹的分數。

題意:給定一顆樹,求數的最大連通子串行。無向樹。

思路:樹形dp通常可以用遞迴來求解,求解每個節點的最大連通子串行,根節點的最大連通子串行等於子節點的最大連通子串行之和。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-2rj0iwft-1584575834408)(c:\users\15209\pictures\部落格\dp004.jpg)]

**:#include #include #include using namespace std;

const int n=100010;

typedef long long ll;

ll f[n];

int w[n];

int n;

int h[n],e[2*n],ne[n*2],idx;

void add(int a,int b)

void dfs(int u,int father)

}int main()

for(int i=0;i總結:

1.max()函式比較的倆個數型別要一致。

2.遞迴的時候為了防止向上遞迴,可以增加乙個引數。

藍橋杯 生命之樹 樹形DP

生命之樹 在x森林裡,上帝建立了生命之樹。他給每棵樹的每個節點 葉子也稱為乙個節點 上,都標了乙個整數,代表這個點的和諧值。上帝要在這棵樹內選出乙個非空節點集s,使得對於s中的任意兩個點a,b,都存在乙個點列 使得這個點列中的每個點都是s裡面的元素,且序列中相鄰兩個點間有一條邊相連。在這個前提下,上...

藍橋杯 生命之樹 樹形dp

在x森林裡,上帝建立了生命之樹。他給每棵樹的每個節點 葉子也稱為乙個節點 上,都標了乙個整數,代表這個點的和諧值。上帝要在這棵樹內選出乙個非空節點集s,使得對於s中的任意兩個點a,b,都存在乙個點列 使得這個點列中的每個點都是s裡面的元素,且序列中相鄰兩個點間有一條邊相連。在這個前提下,上帝要使得s...

生命之樹 樹形dp

第十題 生命之樹在x森林裡,上帝建立了生命之樹。他給每棵樹的每個節點 葉子也稱為乙個節點 上,都標了乙個整數,代表這個點的和諧值。上帝要在這棵樹內選出乙個非空節點集s,使得對於s中的任意兩個點a,b,都存在乙個點列 使得這個點列中的每個點都是s裡面的元素,且序列中相鄰兩個點間有一條邊相連。在這個前提...