沒有上司的晚會 樹型DP

2021-05-22 21:08:46 字數 981 閱讀 7033

樹形dp是dp中的一種,還是比較容易的。

一般採用樹形dp,都是從葉子到根.  也有從根到葉子的聽說,目前沒見到。

做了兩題

1.沒有上司的晚會 

背景 有個公司要舉行一場晚會。 

為了能玩得開心,公司領導決定:如果邀請了某個人,那麼一定不會邀請他的上司 

(上司的上司,上司的上司的上司……都可以邀請)。 

題目 每個參加晚會的人都能為晚會增添一些氣氛,求乙個邀請方案,使氣氛值的和最大。 

輸入格式 

第1行乙個整數n(1<=n<=6000)表示公司的人數。 

接下來n行每行乙個整數。第i行的數表示第i個人的氣氛值x(-128<=x<=127)。 

接下來每行兩個整數l,k。表示第k個人是第l個人的上司。 

輸入以0 0結束。 

輸出格式 

乙個數,最大的氣氛值和。 

sample input

1 32 3

6 47 4

4 53 5

0 0sample output

這一題應該是預設乙個人沒有兩個直接上司的,所以形成的是乙個樹。

這顆樹的轉移方程還是比較容易想到的

f[i][0] 表示第i顆子樹(i節點是這顆樹的根,也就是其他人的上司..不一定是直接上司),i不參加

f[i][1] 表示i參加

那麼f[i][0] = ∑max 他的直接下司可去可不去

f[i][1] = ( ∑f[i.son[j]][0] ) + s[i] 他的直接下司不可去

其中涉及到乙個問題

就是乙個根可能有多個孩子,怎樣去表示。我們發現把這顆樹建立起來以後,只要能夠輕鬆地依次遍歷某個根的所有孩子就可以了。

所以我採用了表示兄弟的方法

我儲存了乙個根的第乙個孩子和最後乙個孩子,而next[i]表示i節點的下乙個兄弟  沒有為-1

father我是用來找根的

我用了乙個遞迴。**核心:

完整**:

沒有上司的晚會 樹形DP

題意 description ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。讀入 input 第一行乙個整數n。1...

沒有上司的晚會(樹形DP)

一道比較水的樹形dp 由題意得,兩個相鄰的節點不能同時取,而且存在負數 dp定義很直接 dp i 1 取 dp i 0 不取 dp陣列存最大值 可以從根節點dfs下去 收集0和1的資訊 狀態轉移也很顯然 dp x 0 max dp y 0 dp y 1 dp x 1 dp y 0 include i...

沒有上司的晚會 樹形DP

某公司要舉辦一次晚會,但是為了使得晚會的氣氛更加活躍,每個參加晚會的人都不希望在晚會中見到他的上司,要不然他們會很掃興。現在已知每個人的活躍指數和上司關係 當然不可能存在環 求邀請哪些人來能使得晚會的總活躍指數最大。利 用鏈 式儲存結 構。對於 每乙個頂 點,開一 條鏈,依 次儲存以 該點為起 點的...