樹形dp總結

2021-06-18 08:50:19 字數 1515 閱讀 1311

from:

列出一些經典問題吧:

1:給出一棵樹 每個節點有權值  

要求父節點和子節點不能同時取 求能夠取得的最大值  (hdu1520)

2:給出一棵樹,求離每個節點最遠的點的距離 (hdu2196)

3:1>在乙個地圖上,有n座城堡,每座城堡都有一定的寶物,在每次遊戲中允許攻克m個城堡並獲得裡面的寶物。但由於地理位置原因,有些城堡不能直接攻克,要攻克這些城堡必須先攻克其他某乙個特定的城堡。求獲得盡量多的寶物應該攻克哪m個城堡。 (hdu1561)

題解:樹形dp+揹包 

2>每個節點有兩個值bug和brain,當清掃該節點的所有bug時就得到brain值,只有當父節點被清空時,才可以清掃它的子節點,而清掃需要一定的人員。給定m個人員,n個結點的樹,求最大brain和 (hdu1011)

3>現在有n個村子,你想要用收買m個村子為你投票,其中收買第i個村子的代價是val[i]。但是有些村子存在從屬關係,如果b從屬於a國,則收買了a也意味著買通了b,而且這些關係是傳遞的。問你最小要付出的代價是多少? (poj3345)

4:1>一棵樹,定義每個節點的balance值:去掉這點節點後的森林裡所有樹的最大節點數。求出最小的balance值和其所對應的節點編號(poj1655)

2>給你一棵無向樹 t,要求依次去除樹中的某個結點,求去掉該結點後變成的森林 t' 中的最大分支。並要求該分支為去除的結點盡可能少。答案可能有多個,需要按照節點編號從小到大輸出 (poj3107)

5:給一棵樹, n結點<=1000, 和k <=200,  在這棵樹上找大小為k的子樹, 使其點權和值最大 (zoj3201

6:給乙個樹狀圖,有n個點。求出,去掉哪個點,使得剩下的每個連通子圖中點的數量不超過n/2。如果有很多這樣的點,就按公升序輸出。n<=10000 (poj2378)

7:一棵n個結點的帶權無根樹,從中刪去一條邊,使得剩下來的兩棵子樹的節點權值之和的絕對值最小,並求出得到的最小絕對值 (poj3140)

8:給出一些點,有值,給出一些邊,然後求去掉一條邊後將分成連通的兩部分,且兩部分的差值最小 (hdu2242)

9:有n個點組成乙個樹,問至少要刪除多少條邊才能獲得一棵有p個結點的子樹 (poj1947)

10:一棵樹n<=1000(節點的分支<=8),snail在根處,它要找到在某個葉子處的house而其中一些節點上有worm,worm會告訴它的house是否在這個子樹上求snail最快尋找到house走過路徑的期望值 (poj2057)

11:給你一顆蘋果樹,有n個節點每個節點上都有乙個蘋果也就是有乙個權值,當你經過這個節點是你將得到這個權值,重複走節點是只能算一次,給你n-1條邊。問你只能走k步能得到的最大權值和 (poj2486)

12:一顆二叉蘋果樹樹上結蘋果,要求剪掉幾棵枝,然後求保留q根樹枝能保留的最多到蘋果數 (ural1018)

13:給定一棵樹,求最少連多少條邊,使得每個點在且僅在某乙個環內。 (poj1848)

14:在一棵樹形的城市中建立一些消防站,但每個城市有乙個最大距離限制,求需要的最小花費 (poj2152)

樹形dp總結

這個月一直搞dp了,狀壓,數字,樹形,感覺雖然有時訓練很辛苦,但真的很充實。這個星期看了一些樹形dp的資料。樹形dp簡單來說就是在樹上的dp,這裡的很多題,都和揹包有聯絡,從乙個根節點開始,分配方案給它的子樹。有乙個很有意思的題。沒有上司的聚會 hdu 1520 大致題意就是說,要舉辦乙個聚會,每個...

樹形DP總結

換根 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...

樹形DP簡單總結

樹的特徵 1.n個點 只有n 1條邊的無向圖 2.無向圖里 任意兩點有且只有一條路 3.乙個點只有乙個前驅 但可以有多個後繼 4.無向圖沒有環 樹形dp 由於樹有著天然的遞迴結構 父子結構 而且它作為一種特殊的圖 可以描述許多複雜的資訊 因此在樹就成了一種很適合dp的框架 問題 給你一棵樹 要求用最...