日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 互聯(lián)網(wǎng) > HDU 1520 Anniversary party 樹(shù)形DP

HDU 1520 Anniversary party 樹(shù)形DP

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-09-16 21:22:04 閱讀次數(shù):2513次

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

題意:給出一個(gè)職場(chǎng)關(guān)系圖,每個(gè)人有自己的價(jià)值,并且每個(gè)人只有一個(gè)領(lǐng)導(dǎo),我要邀請(qǐng)的人不可以是一個(gè)人和他的直系領(lǐng)導(dǎo),問(wèn)最多能邀請(qǐng)到多少價(jià)值的人。

思路:入門(mén)題,就是把簡(jiǎn)單DP運(yùn)用到了樹(shù)這種數(shù)據(jù)結(jié)構(gòu)里,蠻有趣的。看題意應(yīng)該叫森林DP比較合適一點(diǎn)。首先是建樹(shù),找到的根節(jié)點(diǎn)就是沒(méi)有父親節(jié)點(diǎn)的節(jié)點(diǎn)。對(duì)于樹(shù)上的一個(gè)節(jié)點(diǎn)u,dp[u][0]代表著不選擇這個(gè)節(jié)點(diǎn)能得到的最大價(jià)值,dp[u][1]代表著選擇這個(gè)節(jié)點(diǎn)能得到的最大價(jià)值。

狀態(tài)轉(zhuǎn)移方程:dp[u][0]=sum(max(dp[v][0],dp[v][1]))。不選當(dāng)前節(jié)點(diǎn),那么他的每個(gè)子節(jié)點(diǎn)都是可以選也可以不選。

                            dp[u][1]=sum(dp[v][0])。選擇當(dāng)前節(jié)點(diǎn),那么他的每個(gè)子節(jié)點(diǎn)都不可以選擇。

代碼:

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<queue> #include<stack> #include<vector> #include<ctype.h> #include<algorithm> #include<string> #define PI acos(-1.0) #define maxn 6005 #define INF 0x7fffffff typedef long long LL; using namespace std; int score[maxn],head[maxn],top,dp[maxn][2]; bool from[maxn]; void init() { memset(head,-1,sizeof(head)); memset(from,0,sizeof(from)); memset(dp,0,sizeof(dp)); top=0; } struct Edge { int v; int next; } edge[maxn]; int add_edge(int u,int v) { edge[top].v=v; edge[top].next=head[u]; head[u]=top++; } void dfs(int u) { for(int i=head[u]; i!=-1; i=edge[i].next) { int v=edge[i].v; dfs(v); dp[u][1]+=dp[v][0]; dp[u][0]+=max(dp[v][1],dp[v][0]); } dp[u][1]+=score[u]; } int main() { int tot,u,v; while(~scanf("%d",&tot)) { init(); for(int i=1; i<=tot; i++) scanf("%d",&score[i]); while(scanf("%d%d",&u,&v)) { if(u==0&&v==0) break; add_edge(v,u); from[u]=true; } for(int i=1; i<=tot; i++) { if(!from[i]) dfs(i); } int ans=0; for(int i=1; i<=tot; i++) { if(from[i]==0) ans+=max(dp[i][0],dp[i][1]); } printf("%d ",ans); } return 0; }


生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国语对白av| 国产99在线 | 亚洲 | 乱码av| 欧美中文日韩 | 少妇翘臀亚洲精品av图片 | 国产在线免 | av片在线看 | 成人在线一区二区 | 免费福利在线视频 | 久久久免费 | 成人精品| 色片免费| 国产成人精品久久二区二区 | 黄色日批片 | 黄色在线观看网址 | av毛片久久久久午夜福利hd | 国产福利专区 | 久久91| 亚洲一区二区三区免费观看 | 成人福利在线观看 | 国产小视频在线播放 | 国产人成看黄久久久久久久久 | 一本一本久久a久久精品牛牛影视 | 欧美一区二区在线视频 | 一区在线免费观看 | 99久久99| 国产免费小视频 | 欧美日韩中文字幕 | 免费国产一区 | 精品久久久久久久 | 亚洲精品1| 国av在线 | 成人在线视频观看 | 国产精品久久久久久久久久免费看 | 在线观看污污视频 | 国产在线观看一区二区三区 | 少妇av一区二区三区 | 精品香蕉99久久久久网站 | 精品久久影院 | 蜜臀91丨九色丨蝌蚪中文 | 91麻豆精品91久久久久同性 |