题目描述

  Ural周立大学的校长正在筹备学校的80周年纪念聚会。由于学校的职员有不同的职务级别,可以构成一棵以校长为根的人事关系树。每个职员都有一个唯一的整数编号(范围在1到N之间),并且对应一个参加聚会所获得的欢乐度。为了使每个参加聚会者都感到欢乐,校长想设法使每个职员和他(她)的直接上司不会同时参加聚会。
  你的任务是设计一份参加聚会者的名单,使总的欢乐度最高。


输入格式

  输入的第一行是一个整数N,1<= N <= 6000
  以下的N行是对应的N个职员的欢乐度(欢乐度是一个从-128到127之间的整数)
  接着是学校的人事关系树,树的每一行格式如下:
  < L > < K >
  表示第K个职员是第L个职员的直接上司。
  输入以0 0表示结束


输出格式

  输出:参加聚会者获得的最大总欢乐度


样例数据

样例输入

7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0

样例输出

5


题目分析

树型动规,与战略游戏类似
设f[i][0]表示不邀请i的最高欢乐度,f[i][1]表示邀请i的最高欢乐度
若邀请i,则不能邀请i的儿子,若不邀请i,则可邀请i的儿子也可不邀请i的儿子
取个最大值即可


源代码

#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
inline const long long Get_Int() {long long num=0,bj=1;char x=getchar();while(x<'0'||x>'9') {if(x=='-')bj=-1;x=getchar();}while(x>='0'&&x<='9') {num=num*10+x-'0';x=getchar();}return num*bj;
}
struct Edge {int to,next;
} Edge[50005];
int n,cnt=0,Head[50005],f[50005][5],vst[50005],Joy[50005],root;
void AddEdge(int x,int y) {cnt++;Edge[cnt].to=y;Edge[cnt].next=Head[x];Head[x]=cnt;
}
void TreeDp(int root) {f[root][0]=0;f[root][1]=Joy[root];for(int i=Head[root]; i; i=Edge[i].next) {int Next=Edge[i].to;TreeDp(Next);f[root][0]=max(f[root][0],max(f[root][0]+f[Next][1],f[root][0]+f[Next][0]));f[root][1]=max(f[root][1],f[Next][0]+f[root][1]);}
}
int main() {n=Get_Int();for(int i=1; i<=n; i++)Joy[i]=Get_Int();while(true) {int x=Get_Int(),y=Get_Int();if(x==0&&y==0)break;AddEdge(y,x);vst[x]=1;}for(int i=1; i<=n; i++)if(!vst[i])root=i;TreeDp(root);cout<<max(f[root][0],f[root][1])<<endl;return 0;
}

[Ural 1039] 没有上司的晚会相关推荐

  1. 【树形DP】没有上司的晚会 (ssl 1607)

    没有上司的晚会没有上司的晚会没有上司的晚会 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员 ...

  2. 【SSL1607】没有上司的晚会【树形DP】

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

  3. Anniversary party (hdu1520) 没有上司的晚会

    题目描述 Ural 大学有N 个职员,编号为 1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快 ...

  4. hdu 1520 没有上司的晚会

    树形dp入门题 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1520 Attention: hdu上每个输入都有多组数据 可能有既没有上司也没有下属的孤 ...

  5. 2019.01.23【NOIP普及组】模拟赛C组总结

    总结 这次的分数是100+100+0+100=300 第一题第一题一开始把题看错了,乱打一通,结果才发现自己打错了,把题看清后,就知道用栈,快速解决.第二题和之前做过的一道题十分相似,就是用前缀和来将 ...

  6. 老子哲学与太极拳技击

    太极拳是中华武术园地中的一朵奇葩.它熔铸了中华民族古朴而璨烂的文化,使习练者不仅从中得到健身.修身.养性的无穷乐趣,更感受到其中奥妙无穷的哲学魅力.本文试从太极拳的技击特点入手,来探讨太极拳与老子哲学 ...

  7. 【SSL2119】【2011分区联赛模拟试题】电子眼【DP】

    Description 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N-1条马路和N个路口,每条马路连接两个路口,每两个路口之间最多只有一条马 ...

  8. 【邻接表】【树状DP】2011分区联赛模拟试题 电子眼

    Description 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N−1N-1N−1条马路和NNN个路口,每条马路连接两个路口,每两个路口之 ...

  9. 【tyvj1052】【树状dp】没有上司的舞会

    描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数最大 ...

最新文章

  1. 相机成像与校正原理:将外部世界进行降维
  2. 统一修改文件下所有图片大小 Python3
  3. Matlab某医院用光电比色计,数理统计答案(研究生).ppt
  4. python标准类型内建模块_Python内建模块struct实例详解
  5. 塔式Server 服务器ESXI6.5安装
  6. 实验干货分享:用Go语言实现分布式缓存开发之map
  7. [转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
  8. c语言cis,c语言小白学习历程第五篇
  9. 9.4 LSMW程序创建操作手册 第8 9 10 11步
  10. 近期机器学习竞赛汇总~总奖池超千万人民币!
  11. CSS3否定伪类选择器
  12. 【Spring】Spring的AOP术语解释
  13. h5 默认为移动端页面_HTML5默认登录页面
  14. 带宽、特征频率、截止频率、-3dB
  15. unifex:C++现代异步模型先导
  16. RESTful API入门学习笔记
  17. android如何使用so库,Android 使用SO库
  18. SPA-Vue企业级开发模式介绍
  19. 什么是数据产品,怎么设计一个好用的数据产品
  20. canvas基本使用,以及七巧板绘制

热门文章

  1. C++入门——“为C补坑”
  2. 计算机毕业设计之java+springboot基于vue的漫画之家系统-动漫信息网站
  3. 8瓶药,有一瓶毒药,至少需要几只小白鼠才能一次实验出结果
  4. 和李易打赌 我看好雷军的小米手机
  5. 微信小程序组件库解析:图片上传与排序组件yImgPro
  6. 函数可导和可微的区别: 一元中互为充要;多元中可微是可导的必要条件,可导不一定可微。
  7. 遇到问题--mac合盖后断网----mac合盖后不断网设置--亲测有效
  8. NXP S32K1 DMA模块
  9. 总结: Vue2中基础语法(五)
  10. 含不等式的优化设计matlab,解析机械优化设计中MATLAB的应用