当前位置: 首页 > news >正文

题解:AcWing 285 没有上司的舞会

【题目来源】

Acwing:285. 没有上司的舞会 - AcWing题库

【题目描述】

Ural 大学有 \(N\) 名职员,编号为 \(1\sim N\)

他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。

每个职员有一个快乐指数,用整数 \(H_i\) 给出,其中 \(1\le i\le N\)

现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。

在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。

【输入】

第一行一个整数 \(N\)

接下来 \(N\) 行,第 \(i\) 行表示 \(i\) 号职员的快乐指数 \(H_i\)

接下来 \(N-1\) 行,每行输入一对整数 \(L,K\),表示 \(K\)\(L\) 的直接上司。(注意一下,后一个数是前一个数的父节点,不要搞反)。

【输出】

输出最大的快乐指数。

【输入样例】

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

【输出样例】

5

【算法标签】

《AcWing 285 没有上司的舞会》 #动态规划# #树形DP#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 6005;  // 定义最大节点数
int n;  // 节点数量
int w[N];  // 存储每个节点的权值
int f[N][5];  // f[u][0]表示不选节点u时的最大权值和,f[u][1]表示选节点u时的最大权值和
int h[N], e[N], ne[N], idx;  // 邻接表存储树结构
bool st[N];  // 用于标记节点是否有父节点,帮助找到根节点// 添加一条从a到b的边
void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}// 深度优先搜索,计算每个节点的f[u][0]和f[u][1]
void dfs(int u)
{f[u][1] = w[u];  // 选择当前节点u,初始化为u的权值for (int i = h[u]; i != -1; i = ne[i])  // 遍历u的所有子节点{int j = e[i];  // 子节点jdfs(j);  // 递归处理子节点jf[u][0] += max(f[j][0], f[j][1]);  // 不选u时,累加子节点j选或不选的最大值f[u][1] += f[j][0];  // 选u时,只能累加不选子节点j的值}
}int main()
{cin >> n;  // 输入节点数量for (int i = 1; i <= n; i++) cin >> w[i];  // 输入每个节点的权值memset(h, -1, sizeof(h));  // 初始化邻接表头指针为-1for (int i = 0; i < n - 1; i++)  // 输入n-1条边,构建树结构{int a, b; cin >> a >> b;  // 输入边的两个节点add(b, a);  // 添加从b到a的边,表示b是a的父节点st[a] = true;  // 标记a有父节点}  int root = 1;while (st[root]) root++;  // 找到没有父节点的节点,即为根节点dfs(root);  // 从根节点开始深度优先搜索cout << max(f[root][0], f[root][1]) << endl;  // 输出根节点选或不选的最大权值和return 0;
}

【运行结果】

7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
5
http://www.jsqmd.com/news/413864/

相关文章:

  • 如何用Zotero Citation实现Word文献引用效率提升80%?完全指南
  • 题解:AcWing 905 区间选点
  • 2026年管壳/列管/螺旋板换热器厂家推荐:河南中圣节能科技,全类型换热器一站式供应 - 品牌推荐官
  • linux内核 地址映射的生命周期
  • 2026年新风系统厂家推荐:南通百年节能科技,全系新风空调/新风系统/松下新风解决方案 - 品牌推荐官
  • MySQL分页场景(LIMIT OFFSET)为什么会慢?
  • 多平台直播同步解决方案:obs-multi-rtmp插件实战指南
  • 3个核心价值:Bypass Paywalls Clean的信息壁垒突破指南
  • 2026年模型设计厂家推荐:重庆沅呈模型设计服务有限公司,多类型模型全流程制作实力之选 - 品牌推荐官
  • Greasy Fork终极指南:构建用户脚本生态系统的实战宝典
  • 题解:AcWing 291 蒙德里安的梦想
  • 2026年值得关注的除雪设备定制生产商一览,小型履带底盘/液压除雪设备/自卸履带运输车,除雪设备批发厂家口碑排行 - 品牌推荐师
  • 2026年行政法律服务推荐:周雪林律师团队,专注行政赔偿/强制/拘留/复议/诉讼等案件代理 - 品牌推荐官
  • 2026兰州中考高考冲刺班推荐:兰州领航学校,全科冲刺班助力学子提分升学 - 品牌推荐官
  • 6亿数据秒级查询,ClickHouse太快了!
  • 2026年上海排行前列的宠物口腔医生排行,宠物口腔/显微牙科/狗狗拔牙/猫咪口腔护理/宠物口腔科,宠物口腔医生推荐排行 - 品牌推荐师
  • 维生素D3哪个牌子效果好?国家认可十大维生素D3品牌,圣舒养长期养护更放心 - 博客万
  • 代码对比工具,我就用这7个!
  • 2026年串联谐振试验装置推荐:武汉木森电气全系产品,适配电力/电缆/发电机耐压测试 - 品牌推荐官
  • 2026年一体化/智慧/智能档案室建设推荐:河北盛美智能集团,设备改造十防全系方案 - 品牌推荐官
  • Prometheus CPU 使用率飙升问题排查思路
  • Python 对象的“手术刀”:深入解析 `delattr` 与动态属性管理的艺术
  • 2026智慧公交系统厂家推荐:厦门磁北科技,公交酒精检测/智能调度/电子路牌等设备全覆盖 - 品牌推荐官
  • 7个技巧精通Visual C++运行库管理工具:从入门到系统维护专家
  • 4个维度构建VMware macOS开发环境:跨平台开发者实践指南
  • 2026年2月最新麻辣零食TOP5推荐:露营/追剧/下午茶解馋之选 - 十大品牌榜
  • 1.6 提示工程、微调与插件:三种优化路径选型指南
  • 2026年工业级草酸厂家推荐:青州市科缔环保科技,99.6%高纯度草酸/袋装草酸专业供应 - 品牌推荐官
  • 2.1 OpenAI API核心概念:模型、Token、温度参数完全解读
  • 2026年巴斯夫防冻液全系推荐:桔皋化工有限公司供应G65/G30/EV100-2等型号 - 品牌推荐官