洛谷p1352 沒有上司的舞會

2021-08-21 02:21:18 字數 954 閱讀 9801

題目已經說了這是一棵樹,而這道題顯然不是重心或者lca之類的東西,所以我們考慮樹形dp。(一句廢話)

首先考慮如果節點i不去舞會時以i為根的子樹的快樂指數最大值,顯然就是每個以i的兒子為根的子樹的最大值之和。

如果節點i參加舞會,那麼相應的最大值就是i的每個兒子都不去時,以i的兒子為根的最大值之和,再加上i的快樂指數。

所以狀態和轉移方程就很顯然了,設f[

i][0

/1] f[i

][0/

1]

表示節點i參加/不參加舞會時,以i為根的子樹的最大值,則f[

i][0

]=∑max(f

[j][

0],f

[j][

1]) f[i

][0]

=∑

max(f[

j][0

],f[

j][1

])

,f[i][1

]=(∑

f[j]

[0])

+ri f[i

][1]

=(∑f

[j][

0])+

ri

,其中 j 為 i 的兒子。

附上本蒟蒻醜陋的**

#include

#include

#include

using

namespace

std;

const

int n=6000;

int n,a[n+10],f[n+10][2],rt,cnt[n+10],to[n+10],pre[n+10],h[n+10];

void dfs(int x)

}int main()

dfs(rt);printf("%d\n",max(f[rt][0],f[rt][1]));return

0;}

洛谷 P1352 沒有上司的舞會

洛谷 p1352 沒有上司的舞會 某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞...

洛谷 P1352 沒有上司的舞會

原題 這道題我非常神奇賴皮的用了拓撲,實際上這是一道樹形dp,但是身為蒟蒻的我覺得拓撲可以寫,結果真的讓我水過了,哈哈哈 用乙個二維陣列模擬每個人參加或者不參加,從最底層的員工開始向上拓撲 by acer.mo include include includeusing namespace std i...

洛谷P1352 沒有上司的舞會

某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計計算,邀請...