没有上司的晚会(树形DP)

原创 2017年10月06日 21:56:26

没有上司的晚会 poj2342

思路

一道比较水的树形DP
由题意得,两个相邻的节点不能同时取,而且存在负数
dp定义很直接
dp[i][1] =>取
dp[i][0] =>不取
dp数组存最大值
可以从根节点dfs下去 收集0和1的信息
状态转移也很显然:
dp[x][0]+=MAX(dp[y][0],dp[y][1]);
dp[x][1]+=dp[y][0];

题解

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;

#define FOR(i,a,b) for(int i=(a),i##_end_=(b);i<=i##_end_;++i)
#define DOR(i,a,b) for(int i=(a),i##_end_=(b);i>=i##_end_;--i)
#define INF 0x3f3f3f3f
#define LL long long
#define M 200005

inline void chkmi(int &a,int b){if(a>b)a=b;}
inline void chkmx(int &a,int b){if(a<b)a=b;}
inline int MAX(int a,int b){return a>b?a:b;}
inline int MIN(int a,int b){return a<b?a:b;}

vector<int> es[M];
int val[M],dp[M][2];
int n,a,b,ans;
void dfs(int s,int fr){
    dp[s][1]=val[s];
    FOR(i,0,es[s].size()-1){
        int y=es[s][i];
        if(y==fr)continue;
        dfs(y,s);
        dp[s][0]+=MAX(dp[y][0],dp[y][1]);
        dp[s][1]+=dp[y][0];
    }
}
int main(){
    cin>>n;
    FOR(i,1,n) scanf("%d",&val[i]);
    FOR(i,2,n){
        scanf("%d%d",&a,&b);
        es[a].push_back(b); 
        es[b].push_back(a);
    }
    dfs(1,0);
    printf("%d\n",MAX(dp[1][0],dp[1][1]));
    return 0;   
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

ural 1039 没有上司的晚会 树形dp

Description   Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要...
  • liangzihao1
  • liangzihao1
  • 2016年05月13日 20:21
  • 324

没有上司的晚会 树形DP

题意/Description: Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,...
  • peter_zhu01
  • peter_zhu01
  • 2016年05月13日 20:15
  • 431

树形dp 没有上司的舞会

这题很简单,而且题面描述也很清楚,我就不放样例了。 设f[i][2]表示第i个点选(1)或不选(0),以i为根的这棵子树能选的最大价值。易得转移方程为: f[i][0]=∑(max(f[s][0]...
  • largecub233
  • largecub233
  • 2017年02月17日 10:39
  • 158

Anniversary party(树形dp第一步)

Description There is going to be a party to celebrate the 80-th Anniversary of the Ural State U...
  • bmamb
  • bmamb
  • 2016年05月06日 17:09
  • 652

简单树形动态规划(ural 1039 没有上司的晚会)

没有上司的晚会(party)Ural 1039 http://acm.timus.ru/problem.aspx?space=1&num=1039 【问题描述】 有个公司要举行一场晚会。为了能玩...
  • qq_36038511
  • qq_36038511
  • 2017年03月21日 13:25
  • 174

没有上司的晚会

Description 有个公司要举行一场晚会。  为了能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会邀请他的上司  (上司的上司,上司的上司的上司……都可以邀请)。   每个参加晚...
  • u012274244
  • u012274244
  • 2013年11月06日 15:08
  • 648

[Ural 1039] 没有上司的晚会

题目描述  Ural周立大学的校长正在筹备学校的80周年纪念聚会。由于学校的职员有不同的职务级别,可以构成一棵以校长为根的人事关系树。每个职员都有一个唯一的整数编号(范围在1到N之间),并且对应一个参...
  • Bill_Yang_2016
  • Bill_Yang_2016
  • 2016年12月24日 17:46
  • 316

SSL 1607 没有上司的晚会 树形dp

题意:有n个职员,每个职员都有一个快乐指数和最多一个上司。但邀请了职员就一定不能邀请该职员的上司。问快乐指数最大为多少。 分析:很明显的树形dp。f[i]表示在以i为根的树且选职员i的最大快...
  • qq_33229466
  • qq_33229466
  • 2016年04月13日 21:45
  • 311

#bzoj1378#没有上司的晚会(树形DP基础)

【基础算法】没有上司的晚会 时间限制: 1 Sec 内存限制: 64 MB 题目描述 Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是...
  • its_elaine
  • its_elaine
  • 2017年04月06日 20:53
  • 229

没有上司的晚会 树型DP

 树形DP是DP中的一种,还是比较容易的。 一般采用树形DP,都是从叶子到根.  也有从根到叶子的听说,目前没见到。 做了两题 1.没有上司的晚会  背景 有个公司要举行一场晚会。 为了能玩得开心,公...
  • code_beauty
  • code_beauty
  • 2010年06月21日 10:45
  • 457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:没有上司的晚会(树形DP)
举报原因:
原因补充:

(最多只允许输入30个字)