time limit:10000ms memory limit:65536k
total submit:63 accepted:27
case time limit:1000ms
description
太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。
皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀;某些宮殿間可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。
可是陸小鳳手上的經費不足,無論如何也沒法在每個宮殿都安置留守侍衛。
幫助陸小鳳布置侍衛,在看守全部宮殿的前提下,使得花費的經費最少。
input
輸入檔案中資料表示一棵樹,描述如下:
第1行 n,表示樹中結點的數目。
第2行至第n+1行,每行描述每個宮殿結點資訊,依次為:該宮殿結點標號i(0對於乙個n(0 < n<=1500)個結點的樹,結點標號在1到n之間,且標號不重複。
output
輸出檔案僅包含乙個數,為所求的最少的經費。
sample input
61 30 3 2 3 4
2 16 2 5 6
3 5 0
4 4 0
5 11 0
6 5 0
sample output
25解題思路
設f [d
ep][
0]
f[dep][0]
f[dep]
[0]為第dep個節點放士兵,f[d
ep][
1]
f[dep][1]
f[dep]
[1]為第dep個節點不放,被子節點監視,f[d
ep][
2]
f[dep][2]
f[dep]
[2]為第dep個節點不放,被父節點監視。
第d ep
depde
p個節點有士兵了,那麼子節點放與不放都可以。
f[dep][0
]+=min(f[a[i]
.x][0]
,min
(f[a[i]
.x][1]
,f[a[i]
.x][2]
));}
f[dep][0
]+=w[dep]
;//因為放了,所以最後要加上他的經費(在迴圈外)
第dep
depde
p個節點被父節點監視,所以第dep節點的子節點不會被監視到,那麼子節點的子節點 就要放士兵,用來監視第dep
depde
p節點的子節點。
f[dep][2
]+=f[a[i]
.x][1]
;
f[d
ep][
1]
f[dep][1]
f[dep]
[1]求起來略顯複雜
因為被子節點監視,只需要乙個子節點監視即可,其他子節點可放可不放,所以先對子節點可放可不放的和做乙個預處理。
for
(int i=h[dep]
;i;i=a[i]
.next)
min
minmi
n(所有子節點可放可不放的和(tttt
tt)- 當前子節點可放可不放(tmp
[i
]tmp[i]
tmp[i]
)+當前子結點必須放(f[a
[i].
x][0
]f[a[i].x][0]
f[a[i]
.x][
0]))這個式子就可以求出當前子節點放士兵監視的值了
for
(int i=h[dep]
;i;i=a[i]
.next)
f[dep][1
]=min(tt-tmp[i]
+f[a[i]
.x][0]
,f[dep][1
]);
**
#include
#include
#include
#include
#include
using namespace std;
const int inf
=0x7f7f7f7f
;int n,root,w[
2010
],h[
2010
],bsy[
2010
],x,y,k,kk;
long long tmp[
2010
],f[
2010][
3];//記得開long long,這玩意兒真的坑死
struct ca[
4010];
void
add(int x,int y)
void
dfs(int dep)
f[dep][0
]+=w[dep]
;//記得放士兵要加上士兵費
long long tt=0;
memset
(tmp,0,
sizeof
(tmp));
for(int i=h[dep]
;i;i=a[i]
.next)
f[dep][1
]=inf;
for(int i=h[dep]
;i;i=a[i]
.next)
f[dep][1
]=min(tt-tmp[i]
+f[a[i]
.x][0]
,f[dep][1
]);}
int main()
}for
(int i=
1;i<=n;i++)if
(!bsy[i]
)}
皇宮看守 樹形DP
題意 description 太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀 某些宮殿間可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。可是陸小鳳手上的經費不足,無論如何也沒法...
皇宮看守(樹形dp)
description 太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀 某些宮殿間可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。可是陸小鳳手上的經費不足,無論如何也沒法在每個...
皇宮看守 樹形DP
太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀 某些宮殿間可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。可是陸小鳳手上的經費不足,無論如何也沒法在每個宮殿都安置留守侍衛。程式...