题目描述
某大学有 nn 个职员,编号为 1\ldots n1…n。

他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。

现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 r_ir
i

,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。

所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。

输入格式
输入的第一行是一个整数 nn。

第 22 到第 (n + 1)(n+1) 行,每行一个整数,第 (i+1)(i+1) 行的整数表示 ii 号职员的快乐指数 r_ir
i

第 (n + 2)(n+2) 到第 2n2n 行,每行输入一对整数 l, kl,k,代表 kk 是 ll 的直接上司。

输出格式
输出一行一个整数代表最大的快乐指数。

输入输出样例
输入 #1 复制
7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
输出 #1 复制
5
说明/提示
数据规模与约定
对于 100%100% 的数据,保证 1\leq n \leq 6 \times 10^31≤n≤6×10
3
,-128 \leq r_i\leq 127−128≤r
i

≤127,1 \leq l, k \leq n1≤l,k≤n,且给出的关系一定是一棵树。

分析:

令dp[i][1]表示i号职员参加时的最大快乐数,dp[i][0]表示ii号职员不参加时的最大快乐数。
设j是i的下属
dp[i][1]+=dp[j][0]
i参加了,j一定不能参加
dp[i][0]+=max(dp[j][1],dp[j][0])
i不参加,j可参加也可不参加
找到根节点,从根节点开始遍历所有节点,从叶子节点开始推,最终答案是max(dp[root][1],dp[root][0])

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 6e3+10;
const int MOD = 1000000007;
int a[N],in[N],dp[N][2];
vector<int> q[N];
void dfs(int u)
{for(int i=0;i<q[u].size();i++){int v=q[u][i];dfs(v);dp[u][1]+=dp[v][0];dp[u][0]+=max(dp[v][1],dp[v][0]); }
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);dp[i][1]=a[i];}int x,y;for(int i=1;i<n;i++){scanf("%d%d",&x,&y);q[y].push_back(x);in[x]++;}int root;for(int i=1;i<=n;i++)//找根节点 {if(!in[i]){root=i;break;}}dfs(root);printf("%d",max(dp[root][1],dp[root][0])); return 0;
}

洛谷 P1352 没有上司的舞会(树形dp)相关推荐

  1. 洛谷 P1352 没有上司的舞会(树形 DP)

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

  2. 洛谷 P1352 没有上司的舞会

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

  3. 洛谷P1352 没有上司的舞会(树形DP水题)

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

  4. 洛谷 P1352 没有上司的舞会【树形DP/邻接链表+链式前向星】

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

  5. 洛谷P1352 没有上司的舞会题解

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

  6. 洛谷 [P1352] 没有上司的舞会

    树型DP 一个人不能和他的直接上司一起去,那么就分别保存这个人去和不去的最大值 注意转移方程 #include <iostream> #include <cstring> #i ...

  7. AcWing285. 没有上司的舞会(树形DP)题解

    题目传送门 题目描述 Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司. 每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N. 现在要 ...

  8. [洛谷 P4084 USACO17DEC] Barn Painting G (树形dp经典)

    [洛谷 P4084 USACO17DEC] Barn Painting G 题目链接 大致题意: 给定一颗N个节点组成的树,3种颜色,其中K个节点已染色,要求任意两相邻节点颜色不同,求合法染色方案数 ...

  9. 【洛谷P4084】Barn Painting【树形DP】

    题目大意: 题目链接:https://www.luogu.org/problemnew/show/P4084 一棵nnn个节点的树上有kkk个点已被染色.求将这棵树染成三种颜色且相邻的节点颜色不同的方 ...

最新文章

  1. python项目开发:ftp server开发
  2. 【Android】3.19 示例19--全景图HelloWorld
  3. 【PAT甲级】1037 Magic Coupon (25 分) C++ 全部AC
  4. dml语句包括哪些_MySQL数据操作(DML)语句,入门掌握这些足够了
  5. synchronized 和 reentrantlock 区别是什么_JUC源码系列之ReentrantLock源码解析
  6. 动态规划6个题目总结比较
  7. 数据字典简单例子_Python学习100天-Day14(数据分析篇-pandas02)
  8. 浅谈分布式一致性协议之3PC
  9. 携号转网时间明确了: 下半年在全国实施!
  10. Apple Watch再立功!67岁男子意外摔倒后得救
  11. Harmony OS — ProgressBar垂直、水平进度条
  12. 强化学习学习总结(二)——QLearning算法更新和思维决策
  13. dell 如何给raid分区_Dell服务器如何进行RAID级别在线转换及RAID扩容
  14. [19保研]厦门大学软件学院暑期夏令营招生简章
  15. 10-Redis 笔记
  16. 山东罕见姓氏百家姓都没有,翻家谱竟是皇室后裔,专家:是真的
  17. android平板能玩吃鸡吗,刺激战场用什么平板好 平板吃鸡配置推荐
  18. 一篇文章基础HTML总结
  19. 【微信小程序】随机点名系统(点击开始滚动名字点击结束按钮结束滚动)
  20. WICC 广州高峰对话:为开发者标注「航海地图」

热门文章

  1. [八方旅人] 魔大公攻略, 可行的一种打法
  2. win10备份为wim_另类的GHOST,适合SSD硬盘微软Windows版本的FFU镜像备份和还原
  3. 根据Oracle数据库已存在的表生成其他数据库建表语句
  4. 2016年年终总结----拒绝平庸的一年
  5. android开发录屏功能吗,Android-录屏APP该怎么实现?
  6. 机房收费管理系统 C++(visual stdio)
  7. android伸缩布局,Android 之协调伸缩CoordinatorLayout,CollapsingToolbarLayout
  8. python国内的源哪个好_Python pip配置国内源
  9. Windows配置pip国内镜像源
  10. (一)Activiti 数据库25张表——流程历史记录表22(ACT_HI_PROCINST)