樹形動態規劃 金屬採集

2021-06-22 06:22:37 字數 1819 閱讀 4076

演算法提高 金屬採集  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

人類在火星上發現了一種新的金屬!這些金屬分布在一些奇怪的地方,不妨叫它節點好了。一些節點之間有道路相連,所有的節點和道路形成了一棵樹。一共有 n 個節點,這些節點被編號為 1~n 。人類將 k 個機械人送上了火星,目的是採集這些金屬。這些機械人都被送到了乙個指定的著落點, s 號節點。每個機械人在著落之後,必須沿著道路行走。當機械人到達乙個節點時,它會採集這個節點蘊藏的所有金屬礦。當機械人完成自己的任務之後,可以從任意乙個節點返回地球。當然,回到地球的機械人就無法再到火星去了。我們已經提前測量出了每條道路的資訊,包括它的兩個端點 x 和 y,以及通過這條道路需要花費的能量 w 。我們想花費盡量少的能量採集所有節點的金屬,這個任務就交給你了。

輸入格式

第一行包含三個整數 n, s 和 k ,分別代表節點個數、著落點編號,和機械人個數。

接下來一共 n-1 行,每行描述一條道路。一行含有三個整數 x, y 和 w ,代表在 x 號節點和 y 號節點之間有一條道路,通過需要花費 w 個單位的能量。所有道路都可以雙向通行。

輸出格式

輸出乙個整數,代表採集所有節點的金屬所需要的最少能量。

樣例輸入

6 1 3

1 2 1

2 3 1

2 4 1000

2 5 1000

1 6 1000

樣例輸出

3004

樣例說明

所有機械人在 1 號節點著陸。

第乙個機械人的行走路徑為 1->6 ,在 6 號節點返回地球,花費能量為1000。

第二個機械人的行走路徑為 1->2->3->2->4 ,在 4 號節點返回地球,花費能量為1003。

第乙個機械人的行走路徑為 1->2->5 ,在 5 號節點返回地球,花費能量為1001。

資料規模與約定

本題有10個測試點。

對於測試點 1~2 , n <= 10 , k <= 5 。

對於測試點 3 , n <= 100000 , k = 1 。

對於測試點 4 , n <= 1000 , k = 2 。

對於測試點 5~6 , n <= 1000 , k <= 10 。

對於測試點 7~10 , n <= 100000 , k <= 10 。

道路的能量 w 均為不超過 1000 的正整數。

演算法:樹形dp

定義dp(i,j)為從i出發,使用j個機械人的最小值

i的子樹為son

dp(i,j)=(dp(son,0)+cast[son]*2)(子樹沒有停留機械人)+min(dp[p][m-raim]+raim*cost[son]+dp[son][raim])(子樹停留了raim個機械人)

#include#include#include#includeusing namespace std;

#define n 100001

#define max_m 11

#define inf 0xfffffff

struct son

;int vist[n],cost[n],dp[n][max_m],m;

vectornode[n];

int min(int a,int b)

void dfs(int p)

}}int main()

{ int n,s,a,b,c;

son son;

scanf("%d%d%d",&n,&s,&m);

for(int i=0; i<=n; i++)

node[i].clear(),vist[i]=0;

for(int i=1; i

樹形動態規劃

description 有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹 2 5 3 4 1現在這顆樹枝條太多了,需要剪...

樹形動態規劃

分類 演算法 2012 07 01 21 53 494人閱讀收藏 舉報tree output input struct演算法 description 有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我...

樹形動態規劃

問題可以分解成若干相互聯絡的階段,在每乙個階段都要做出決策,全部過程的決策是乙個決策序列。要使整個活動的總體效果達到最優的問題,稱為多階段決策問題。動態規劃就是解決多階段決策最優化問題的一種思想方法。將所給問題的過程,按時間或空間特徵分解成若干相互聯絡的階段,以便按次序去求每階段的解 各階段開始時的...