树形DP的一道较为基础的模板题

  • 状态
dp[i][0/1]为第i个员工是否来参加的最大值
  • 转移
先找到根节点
先遍历完它的儿子,再来更新答案
dp[i][0]+=max(dp[j][0],dp[j][1]);//j为i的儿子,i不来,那j可来可不来
dp[i][1]+=dp[j][0];//j为i的儿子,i来,那只能不来
  • 初始
dp[i][0]=0;//不来的初始值为0
dp[i][1]=r[i];//来的初始值就是此人的快乐指数
  • 答案
很明显就是大BOSS来不来的问题了
max(dp[root][0],dp[root][1]);

完整代码:

#include<bits/stdc++.h>
using namespace std;
const int N=6000+10;
int n,m;
int r[N];
bool v[N];
vector<int>son[N];
int dp[N][2];
inline int read()
{
int tot=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
tot=tot*10+c-'0';
c=getchar();
}
return tot*f;
}
inline void f(int now)
{
dp[now][0]=0;
dp[now][1]=r[now];
for(int i=0;i<son[now].size();i++)
{
int x=son[now][i];
f(x);
dp[now][0]+=max(dp[x][0],dp[x][1]);
dp[now][1]+=dp[x][0];
}
}
int main()
{
n=read();
for(int i=1;i<=n;i++)r[i]=read();
int x,y;
for(int i=1;i<n;i++)
{
x=read();y=read();
son[y].push_back(x);
v[x]=1;
}
int root;
for(int i=1;i<=n;i++)
if(!v[i])
{
root=i;
break;
}
f(root);
int ans=max(dp[root][1],dp[root][0]);
cout<<ans<<endl;
return 0;
}

洛谷 题解 P1352 【没有上司的舞会】的更多相关文章

  1. 洛谷1352 CODEVS1380 没有上司的舞会

    洛谷的测试数据貌似有问题,4个点RE不可避 CODEVS可AC —————— 10分钟后追记:在洛谷把数组范围开到10000+就过了 —————— 题目描述 Description Ural大学有N个 ...

  2. 洛谷 p1352 没有上司的舞会 题解

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  3. 洛谷P1352 没有上司的舞会——树形DP

    第一次自己写树形DP的题,发个博客纪念`- 题目来源:P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结 ...

  4. 洛谷P1352 没有上司的舞会 [2017年5月计划 清北学堂51精英班Day3]

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子 结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职 ...

  5. P1352 没有上司的舞会——树形DP入门

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  6. luogu P1352 没有上司的舞会 x

    P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员 ...

  7. 洛谷 题解 UVA572 【油田 Oil Deposits】

    这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ...

  8. 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)

    必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...

  9. 洛谷题解P4314CPU监控--线段树

    题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=30 ...

随机推荐

  1. 019_linux驱动之_定时器的引入

    (一)定义一个timer_list定时器结构体,linux 内核定时器 timer_list详解 (二)初始化定时器,当超时时间expires到之后会调用buttons_timer_function函 ...

  2. 【线性代数】7-2:线性变化的矩阵(The Matrix of a Linear Transformation)

    title: [线性代数]7-2:线性变化的矩阵(The Matrix of a Linear Transformation) categories: Mathematic Linear Algebr ...

  3. Doki Doki Literature Club ZOJ - 4035

    Doki Doki Literature Club ZOJ - 4035 题解:其实就是简单排序输出就没了. #include <cstdio> #include <cstring& ...

  4. 实战 Prometheus 搭建监控系统

    实战 Prometheus 搭建监控系统 Prometheus 是一款基于时序数据库的开源监控告警系统,说起 Prometheus 则不得不提 SoundCloud,这是一个在线音乐分享的平台,类似于 ...

  5. vue中.sync修饰符,实现子组件实时更新父组件的值

    vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定. 不过它有一个前身,先来看看.sync出现之前是如何实现的 父组件中(传递给子组件一个值:p ...

  6. php-fpm脚本

    #! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required- ...

  7. 测试puppeteer模拟度检测

    var puppeteer = require('puppeteer'); const devices = require('puppeteer/DeviceDescriptors'); const ...

  8. pwn学习日记Day13 《程序员的自我修养》读书笔记

    重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程.它是实现多道程序在内存中同时运行的基础.重定位有两种,分别是动态重定位与静态重定位. 静态重定位:即在程序装入内存的过程中完成,是指 ...

  9. python selenium 的配置安装

    selenium的使用需要以下几个配置步骤. (1) 首先安装selenium,使用python自带的pip进行安装.若pip配置到系统环境变量,可以直接在cmd命令行中使用,若没有配置到到环境变量, ...

  10. linux后台运行nodejs项目

    1.安装pm2,这里默认你已经安装了node.js和npm npm install pm2 -g 2.创建软连接 1)全局path路径 echo $PATH 2)pm2安装路径 安装pm2时,可看到p ...