没有上司的舞会
发布日期:2021-07-14 01:03:48 浏览次数:43 分类:技术文章

本文共 1590 字,大约阅读时间需要 5 分钟。

描述

某大学有N个职员,编号为1~N。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。

输入

第一行一个整数N。(1<=N<=6000)

接下来N行,第i+1行表示i号职员的快乐指数Ri。(-128<=Ri<=127)
接下来N-1行,每行输入一对整数L,K。表示K是L的直接上司。
最后一行输入0 0

输出:

输出最大的快乐指数。

样例

  • Input
    7
    1
    1
    1
    1
    1
    1
    1
    1 3
    2 3
    6 4
    7 4
    4 5
    3 5
    0 0
  • Output
    5

思路

  • 树形dp是建立在树这种数据结构上的dp,一般状态比较好想,通过dfs维护从根到叶子或从叶子到根的状态转移。
  • 用dp[i][0]表示不选i结点的最优结果,dp[i][1]表示选i结点的最优结果
    则:1.dp[fa][0]+=max(dp[son][1],dp[son][0])
    2.dp[fa][1]+=max(dp[son][0])
    通过dfs从下往上遍历树的节点,通过子节点更新父节点,最后max(dp[root][0],dp[root][1])就是答案。

Code

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#include
#define INIT(a,b) memset(a,b,sizeof(a)) #define LL long long int using namespace std; const int MAX=0x7fffffff; const int MIN=-0x7fffffff; const int INF=0x3f3f3f3f; const int Mod=1e9+7; const int MaxN=1e7+7; int val[6001]; int f[6001]; int dp[6001][2]; int vis[6001]; vector
tree[6001]; void dfs(int fa){
dp[fa][1]=val[fa]; vis[fa]=1; for(int i=0;i
>n){
INIT(f,-1);INIT(dp,0);INIT(vis,0);INIT(val,0); for(int i=1;i<=n;i++){
cin>>val[i]; tree[i].clear(); } int fa,z; while((cin>>fa>>z)&&(fa!=0&&z!=0)){
f[fa]=z; tree[z].push_back(fa); } int t=1; while(f[t]!=-1) t=f[t]; dfs(t); cout<
<

转载地址:https://blog.csdn.net/cpongo3/article/details/89334322 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:P3379 【模板】最近公共祖先(LCA)
下一篇:I hate it (最值单点修改区间查询)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月05日 08时11分28秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【C++】算法集锦(9):背包问题 2019-04-27
【C++】算法集锦(10)通俗讲kmp算法 2019-04-27
【C++】算法集锦(12):高楼扔鸡蛋 2019-04-27
【图解】拥塞控制 2019-04-27
线程上下文切换 2019-04-27
什么是服务熔断? 2019-04-27
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能 2019-04-27
C++面经总结之《Effective C++》(一) 2019-04-27
C++面经总结之《Effective C++》(二) 2019-04-27
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!! 2019-04-27
打开我的收藏夹 -- Python数据分析杂谈 2019-04-27
上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构 2019-04-27
上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据 2019-04-27
上手Pandas,带你玩转数据(3)-- pandas数据存入文件 2019-04-27
爬虫遇上不让右击、不让F12的网站,该怎么办? 2019-04-27
上手Pandas,带你玩转数据(4)-- 数据清洗 2019-04-27
上手Pandas,带你玩转数据(5)-- 数据转换与数据定位 2019-04-27
上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (1)开篇:初识爬虫,基础铺垫 丨蓄力计划 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (2)承接:解析网页,抓取标签 丨蓄力计划 2019-04-27