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

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

【题目来源】

洛谷:P1352 没有上司的舞会 - 洛谷

【题目描述】

某大学有 \(n\) 个职员,编号为 \(1…n\)

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

现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 \(r_i\),但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。

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

【输入】

输入的第一行是一个整数 \(n\)

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

\((n+2)\) 到第 \(2n\) 行,每行输入一对整数 \(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

【算法标签】

《洛谷 P1352 没有上司的舞会》 #动态规划DP# #树形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/397112/

相关文章:

  • 使用iOS安全API进行数据加密、解密、签名与验证完整指南
  • 题解:洛谷 P1070 [NOIP 2009 普及组] 道路游戏
  • 如何修复 Chrome Devtools Console 中无法粘贴代码的问题 All In One
  • Trae和Trae团队和Trae技术
  • 题解:洛谷 P1880 [NOI1995] 石子合并
  • COMSOL 隧道断层突水案例探究:不同开挖步数下的围岩奥秘
  • 题解:洛谷 P1435 [IOI 2000] 回文字串
  • Java 时间类(中):JDK8 全新时间 API 详细教程
  • 降AI率常见误区TOP10:别再走弯路了!2026年最全避坑指南
  • <P5464 缩小社交圈>
  • 支持实时预览与高质量导出的专业封面设计工具,完全免费:西瓜封面设计
  • 文科论文降AI比理工科更难?文科生专属降AI方案全解析
  • 题解:洛谷 P1541 [NOIP 2010 提高组] 乌龟棋
  • PEM 电解槽直流道两相流模拟:从建模到求解
  • 手把手教你使用vscode开发stm32!
  • 题解:洛谷 P1854 [IOI 1999] 花店橱窗布置
  • 题解:洛谷 P4310 绝世好题
  • 中华民族音乐传承出版工程服务平台界面设计
  • 用DeepSeek写的论文怎么降AI率?2026最新实操教程手把手教你
  • 2026毕业季降AI全攻略:从论文写作到最终提交一站式指南
  • 法智学教育软件课件UI设计
  • 【Python】【机器学习】集成算法(随机森林、提升算法)
  • 中小企业全生命周期知识产权管理100问:从初创到成熟,一文读懂核心要点
  • 题解:洛谷 P1004 [NOIP 2000 提高组] 方格取数
  • 基于高频信号的PMSM转矩脉动抑制:一场仿真探索之旅
  • 3分钟搞懂深度学习AI:感知机,AI模仿大脑
  • 题解:洛谷 P2679 [NOIP 2015 提高组] 子串
  • 论文降AI后导师说风格变了怎么办?保持个人写作风格的实用指南
  • 题解:洛谷 P1439 两个排列的最长公共子序列
  • php条件语句(混合php的if语句和js编程)