樹形動態規劃,是指當動態規劃的各階段形成一棵樹,利用各階段之間的關係(動態轉移方程),從葉節點(邊界)開始逐步向上一層的節點(即父節點)進行動態規劃,直到動規到根節點,(即原問題),求的問題的最優解.
典型例題:沒有上司的晚會等
沒有上司的晚會
【問題描述】
有個公司要舉行一場晚會。為了讓到會的每個人不受他的直接上司約束而能玩得開心,公司領導決定:如果邀請了某個人,那么一定不會再邀請他的直接的上司,但該人的上司的上司,上司的上司的上司……都可以邀請。已知每個人最多有唯一的一個上司。
已知公司的每個人參加晚會都能為晚會增添一些氣氛,求一個邀請方案,使氣氛值的和最大。
【輸入:】
第1行一個整數N(1<=N<=6000)表示公司的人數。
接下來N行每行一個整數。第i行的書表示第i個人的氣氛值x(-128<=x<=127)。
接下來每行兩個整數L,K。表示第K個人是第L個人的上司。
輸入以0 0結束。
【輸出】:
一個數,最大的氣氛值和。
【樣例輸入】
7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0
【樣例輸出】
5
【分析】
如上例,上司與小兵之間的關係構成一棵樹。
5
| \
3 4
| \ | \
1 2 6 7
又是求最優解,並且每一個節點的取捨關乎到全局 因此,此題可用樹形動態規劃
我們可用f[v][0]存儲不選編號為V的節點的最優解,f[v][1]存儲選編號為V的節點的最優解
#include<iostream>
using namespace std;
int main(){
int n,qf[201],f[201][2],shs[201],XB[201][201],shu[201][201],x,s,maxc,j,k,a,b,l,i;//qf存儲每個人的氣氛值,shs存儲每個人的上司,xb存儲沒個人的下屬,shu存儲構成的樹
cin>>n;
for(i=0;i<=n;i++){xb[i][0]=0;shs[i]=0;}
for(i=1;i<=n;i++)cin>>qf[i];l=1;k=1;
while(l!=0 || k!=0){
cin>>l>>k;
shs[l]=k;
xb[k][0]++;
xb[k][xb[k][0]]=l;
}
maxc=0;
for(i=1;i<=n;i++)
{
x=i;s=1;
while(shs[x]!=0){x=shs[x];s=s+1;}
shu[s][0]++;
shu[s][shu[s][0]]=i;
if (s>maxc)maxc=s;
}//建樹,maxc存儲最大層數
for(i=maxc;i>=1;i--)
for(j=1;j<=shu[i][0];j++)
{
if(xb[shu[i][j]][0]==0){
f[shu[i][j]][0]=0;f[shu[i][j]][1]=qf[shu[i][j]];
}
else
{
f[shu[i][j]][0]=0;f[shu[i][j]][1]=qf[shu[i][j]];
for(k=1;k<=xb[shu[i][j]][0];k++){
a=f[xb[shu[i][j]][k]][0];b=f[xb[shu[i][j]][k]][1];
f[shu[i][j]][1]+=a;
if(b>a)a=b;
f[shu[i][j]][0]+=a;
}//動態轉移方程
}
}s=0;
for(i=1;i<=shu[1][0];i++){
a=f[shu[1][i]][0];b=f[shu[1][i]][1];
if(a<b)a=b;
s=s+a;
}//從頂頭上司那裡擇優選擇
cout<<s<<endl;
system("pause");
return 0;
}
大家看到,樹形動態規劃基本上可以分為2個部分,一個是建樹,另一個就是動態規劃,一個好的數據結構,能使你編程非常容易,這也是樹形動態規劃的難點之一
相關詞條
-
動態規劃
動態規劃(dynamic programming)是運籌學的一個分支,是求解決策過程(decision process)最最佳化的數學方法。20世紀50年...
分類 概念意義 實現問題 套用 推薦書籍 -
dp[動態規劃]
動態規劃(dynamic programming)是運籌學的一個分支,是求解決策過程(decision process)最最佳化的數學方法。20世紀50年...
分類 概念意義 實現問題 套用 推薦書籍 -
動態網站開發第一步
《動態網站開發第一步》是2008年清華大學出版社出版的圖書,作者是朱印宏。
內容簡介 編輯推薦 目錄 -
計算機輔助工藝規劃
計算機輔助工藝規劃(CAPP-computer aided process planning)利用計算機來進行零件加工工藝過程的制訂,把毛坯加工成工程圖...
概述 產生 -
金融理財規劃
金融理財師(AFP)資格認證培訓結合中國本土特點,秉承注重專業、側重實務的原則,專注於為國內私人銀行、財富管理、金融理財、零售銀行等專業人士進行金融培訓...
內容簡介 圖書目錄 -
國家發展改革委辦公廳關於印發西藏生態安全螢幕障保護與建設規劃(2008-2030年)的通知
《國家發展改革委辦公廳關於印發西藏生態安全螢幕障保護與建設規劃(2008-2030年)的通知》是國家發展改革委辦公廳經國務院批准印發的。內容為西藏生態安全...
-
《ExtJSWeb應用程式開發指南》
組件、表格組件、樹形組件、視窗組件、工具列和選單欄組件以及Ext JS...模式 86 5.1 程式規劃 86 5.1.1 設計HTML檔案...
圖書信息 宣傳語 前 言 目 錄 -
ExtJSWeb應用程式開發指南
、樹形組件、視窗組件、工具列和選單欄組件以及Ext JS在AJAX方面的套用... 第5章 Ext JS開發模式 86 5.1 程式規劃 86...
圖書信息 宣傳語 前 言 目 錄 -
網站結構
幾項:1、負責網站規劃,有網站內容、網站布局、網站結構的規劃;2...編輯,在網站建設時參與了網站的規劃工作,但其平常工作職責以網站編輯維護為主;3)規劃性網站策劃:這類網站策劃主要負責對新產品的整體規劃,包括...
策構及概述 網站構建 網站結構最佳化