換根
fat結點更新u結點子結點:dp[fat]=ans[fat]-max(dp[u],0);
老方法:更新根節點:ans[u]=dp[u]+max(dp[fat],0);
第一次dfs:回溯時處理子結點為u向下的簡單路徑第一大和第二大
第二次dfs:遞迴處理子結點為u向上的簡單路徑最大
const
int n=
5e5+5;
vectorint,
int>
>g[n]
;int dp[n][3
],pot[n]
;void
dfs(
int u,
int fat)
else
if(dp[u][1
]]+cost)
dp[u][1
]=dp[v][0
]+cost;}}
void
dfs1
(int u,
int fat)
}
樹形dp總結
from 列出一些經典問題吧 1 給出一棵樹 每個節點有權值 要求父節點和子節點不能同時取 求能夠取得的最大值 hdu1520 2 給出一棵樹,求離每個節點最遠的點的距離 hdu2196 3 1 在乙個地圖上,有n座城堡,每座城堡都有一定的寶物,在每次遊戲中允許攻克m個城堡並獲得裡面的寶物。但由於地...
樹形dp總結
這個月一直搞dp了,狀壓,數字,樹形,感覺雖然有時訓練很辛苦,但真的很充實。這個星期看了一些樹形dp的資料。樹形dp簡單來說就是在樹上的dp,這裡的很多題,都和揹包有聯絡,從乙個根節點開始,分配方案給它的子樹。有乙個很有意思的題。沒有上司的聚會 hdu 1520 大致題意就是說,要舉辦乙個聚會,每個...
樹形DP簡單總結
樹的特徵 1.n個點 只有n 1條邊的無向圖 2.無向圖里 任意兩點有且只有一條路 3.乙個點只有乙個前驅 但可以有多個後繼 4.無向圖沒有環 樹形dp 由於樹有著天然的遞迴結構 父子結構 而且它作為一種特殊的圖 可以描述許多複雜的資訊 因此在樹就成了一種很適合dp的框架 問題 給你一棵樹 要求用最...