hdu1520樹形dp第一題

2022-03-16 00:56:59 字數 1048 閱讀 9887

判斷最大的歡喜值,如果上司來了,直系下屬就不來

如果子節點j不來那麼dp[i][1]+=dp[j][0];

如果子節點j來那麼dp[i][0]+=max(dp[j][0],dp[j][1]);//因為j不來i也可以不來

遞迴的求子節點值

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pi acos(-1)

#define ll long long

#define mod 1000000007

#define ls l,m,rt<<1

#define rs m+1,r,rt<<1|1

#pragma comment(linker, "/stack:1024000000,1024000000")

using

namespace

std;

const

double g=10.0,eps=1e-9

;const

int n=6000+10,maxn=5000+10,inf=0x3f3f3f3f

;vector

v[n];

int dp[n][2

],father[n];

void tree_dp(intx)}

intmain()

inta,b;

while(cin>>a>>b,a&&b)

int root=1

;

while(root!=father[root])root=father[root];

tree_dp(root);

cout

<1],dp[root][0])<

}return0;

}

view code

HDU1520(樹形dp入門題)

題意 在乙個有根樹上每個節點有乙個權值,每相鄰的父親和孩子只能選擇乙個,問怎麼選擇總權值之和最大。思路 樹形dp的常規入門題 設dp i 0 表示 當前這個點不選,dp i 1 表示當前這個點選擇的最優解。轉移方程 dp cur 0 max dp son 1 dp son 0 當前這個點不選,那他的...

HDU 1520 樹形dp裸題

1 hdu 1520 anniversary party 2 總結 第一道樹形dp,有點糾結 題意 公司聚會,員工與直接上司不能同時來,求最大權值和 include include include include include include define max a,b a b?a b usin...

HDU 1520 簡單樹形dp

題意 乙個大學要舉行職工party。為使party中每個人都玩的開心,直接上司和下屬關係的員工不能同時參加。每個人都有各自的歡樂值。問如何邀請使得總歡樂值最大。dp i 1 表示選擇i點 dp i 0 表示不選擇i點 include include include include using nam...