[Ural 1039] 没有上司的晚会
题目描述
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] 没有上司的晚会相关推荐
- 【树形DP】没有上司的晚会 (ssl 1607)
没有上司的晚会没有上司的晚会没有上司的晚会 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员 ...
- 【SSL1607】没有上司的晚会【树形DP】
Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会 ...
- Anniversary party (hdu1520) 没有上司的晚会
题目描述 Ural 大学有N 个职员,编号为 1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快 ...
- hdu 1520 没有上司的晚会
树形dp入门题 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1520 Attention: hdu上每个输入都有多组数据 可能有既没有上司也没有下属的孤 ...
- 2019.01.23【NOIP普及组】模拟赛C组总结
总结 这次的分数是100+100+0+100=300 第一题第一题一开始把题看错了,乱打一通,结果才发现自己打错了,把题看清后,就知道用栈,快速解决.第二题和之前做过的一道题十分相似,就是用前缀和来将 ...
- 老子哲学与太极拳技击
太极拳是中华武术园地中的一朵奇葩.它熔铸了中华民族古朴而璨烂的文化,使习练者不仅从中得到健身.修身.养性的无穷乐趣,更感受到其中奥妙无穷的哲学魅力.本文试从太极拳的技击特点入手,来探讨太极拳与老子哲学 ...
- 【SSL2119】【2011分区联赛模拟试题】电子眼【DP】
Description 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N-1条马路和N个路口,每条马路连接两个路口,每两个路口之间最多只有一条马 ...
- 【邻接表】【树状DP】2011分区联赛模拟试题 电子眼
Description 中山市石一个环境优美.气候宜人的小城市.因为城市的交通并不繁忙,市内的道路网很稀疏.准确地说,中山市有N−1N-1N−1条马路和NNN个路口,每条马路连接两个路口,每两个路口之 ...
- 【tyvj1052】【树状dp】没有上司的舞会
描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数最大 ...
最新文章
- 相机成像与校正原理:将外部世界进行降维
- 统一修改文件下所有图片大小 Python3
- Matlab某医院用光电比色计,数理统计答案(研究生).ppt
- python标准类型内建模块_Python内建模块struct实例详解
- 塔式Server 服务器ESXI6.5安装
- 实验干货分享:用Go语言实现分布式缓存开发之map
- [转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
- c语言cis,c语言小白学习历程第五篇
- 9.4 LSMW程序创建操作手册 第8 9 10 11步
- 近期机器学习竞赛汇总~总奖池超千万人民币!
- CSS3否定伪类选择器
- 【Spring】Spring的AOP术语解释
- h5 默认为移动端页面_HTML5默认登录页面
- 带宽、特征频率、截止频率、-3dB
- unifex:C++现代异步模型先导
- RESTful API入门学习笔记
- android如何使用so库,Android 使用SO库
- SPA-Vue企业级开发模式介绍
- 什么是数据产品,怎么设计一个好用的数据产品
- canvas基本使用,以及七巧板绘制
热门文章
- C++入门——“为C补坑”
- 计算机毕业设计之java+springboot基于vue的漫画之家系统-动漫信息网站
- 8瓶药,有一瓶毒药,至少需要几只小白鼠才能一次实验出结果
- 和李易打赌 我看好雷军的小米手机
- 微信小程序组件库解析:图片上传与排序组件yImgPro
- 函数可导和可微的区别: 一元中互为充要;多元中可微是可导的必要条件,可导不一定可微。
- 遇到问题--mac合盖后断网----mac合盖后不断网设置--亲测有效
- NXP S32K1 DMA模块
- 总结: Vue2中基础语法(五)
- 含不等式的优化设计matlab,解析机械优化设计中MATLAB的应用