多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > 綜合技術(shù) > hdu 1561 The more, The Better 樹(shù)狀DP

hdu 1561 The more, The Better 樹(shù)狀DP

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-05-11 08:59:25 閱讀次數(shù):3269次

The more, The Better

Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5844    Accepted Submission(s): 3476


Problem Description
ACboy很喜歡玩1種戰(zhàn)略游戲,在1個(gè)地圖上,有N座城堡,每座城堡都有1定的寶物,在每次游戲中ACboy允許攻克M個(gè)城堡并取得里面的寶物。但由于地理位置緣由,有些城堡不能直接攻克,要攻克這些城堡必須先攻克其他某1個(gè)特定的城堡。你能幫ACboy算出要取得盡可能多的寶物應(yīng)當(dāng)攻克哪M個(gè)城堡嗎?
 

Input
每一個(gè)測(cè)試實(shí)例首先包括2個(gè)整數(shù),N,M.(1 <= M <= N <= 200);在接下來(lái)的N行里,每行包括2個(gè)整數(shù),a,b. 在第 i 行,a 代表要攻克第 i 個(gè)城堡必須先攻克第 a 個(gè)城堡,如果 a = 0 則代表可以直接攻克第 i 個(gè)城堡。b 代表第 i 個(gè)城堡的寶物數(shù)量, b >= 0。當(dāng)N = 0, M = 0輸入結(jié)束。
 

Output
對(duì)每一個(gè)測(cè)試實(shí)例,輸出1個(gè)整數(shù),代表ACboy攻克M個(gè)城堡所取得的最多寶物的數(shù)量。
 

Sample Input
3 2 0 1 0 2 0 3 7 4 2 2 0 1 0 4 2 1 7 1 7 6 2 2 0 0
 

Sample Output
5 13
 

Author
8600
 

Source
HDU 2006⑴2 Programming Contest
 


鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1561


做法:設(shè)1個(gè)0節(jié)點(diǎn),本身價(jià)值是0,dp[i][j]表示第i個(gè)節(jié)點(diǎn),取了j個(gè)節(jié)點(diǎn)后的價(jià)值。由于先取父親才能取兒子,所以要從dp[i][1] 開(kāi)始轉(zhuǎn)移。把子節(jié)點(diǎn)的狀態(tài)轉(zhuǎn)移到父親節(jié)點(diǎn)。

由于和分組背包1樣,子節(jié)點(diǎn)不能重復(fù)更新父親節(jié)點(diǎn),所之外層循環(huán)父節(jié)點(diǎn)狀態(tài),從大到小,內(nèi)層循環(huán)子節(jié)點(diǎn)狀態(tài)。


#include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> #include <malloc.h> #include <ctype.h> #include <math.h> #include <string> #include <iostream> #include <algorithm> using namespace std; #include <stack> #include <queue> #include <vector> #include <deque> #include <set> #include <map> #define INF 999999999 #define eps 0.00001 #define LL __int64d #define pi acos(⑴.0) vector<int> son[210]; int dp[210][210]; int val[210]; int n,m; void dfs(int nw) { //dp[nw][0]=0; dp[nw][1]=val[nw]; for(int i=0;i<son[nw].size();i++) { dfs(son[nw][i]); int ss=son[nw][i]; for(int k=m;k>=1;k--) { if(dp[nw][k]!=⑴) { for(int j=1;j<=m;j++) { if(dp[ss][j]==⑴) break; dp[nw][j+k]=max(dp[ss][j]+dp[nw][k],dp[nw][j+k]); } } } } } int main() { while(scanf("%d%d",&n,&m),n||m) { memset(dp,⑴,sizeof dp); for(int i=0;i<=n;i++) { son[i].clear(); } val[0]=0; for(int i=1;i<=n;i++) { int a,b; scanf("%d%d",&a,&val[i]); son[a].push_back(i); } dfs(0); printf("%d ",dp[0][m+1]); } return 0; }








生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 精品国产福利 | 在线天堂中文 | 欧美瑟图 | 92精品国产自产在线观看48页 | 国产区精品一区二区不卡中文 | 成人青草亚洲国产 | h网站在线看 | 久久国产精品免费 | 97精品伊人久久大香线蕉 | 91亚洲精品久久91综合 | 欧美 国产 小说 另类 | 亚洲天堂网址 | 中文字幕动漫精品专区 | 亚洲精品专区一区二区欧美 | 中文字幕一区在线观看视频 | 国产免费高清在线精品一区 | 日本不卡视频一区二区 | 久久久久久国产精品免费免费 | 成人免费精品视频 | 日韩欧美一区二区三区视频 | 337p日本欧洲亚洲大胆色噜噜 | 久久就是精品 | 国产在线精品一区二区高清不卡 | 久久久日本精品一区二区三区 | 图片区小说区激情区偷拍区 | 国产成人一区二区三区视频免费蜜 | 国产成人福利美女观看视频 | 美国一级毛片oo | 2020久久精品亚洲热综合一本 | 亚洲欧美日韩综合一区 | 亚洲视频中文字幕在线观看 | 国产成人a毛片在线 | www.亚洲5555.com| 俄罗斯free性欧美hd | 拔擦拔擦8x华人免费久久 | 欧美日韩亚洲国产精品 | 国产一区二区三区高清 | 精品久久国产视频 | 国产精品日韩欧美久久综合 | 国产免费一级片 | 欧美成人午夜做爰视频在线观看 |