LOJ 10160 - 「一本通 5.2 练习 3」周年纪念晚会 / 没有上司的晚会
题面
Ural 州立大学的校长正在筹备学校的 8080 周年纪念聚会。由于学校的职员有不同的职务级别,可以构成一棵以校长为根的人事关系树。每个资源都有一个唯一的整数编号,从 $1$ 到 $N$ 编号,且对应一个参加聚会所获得的欢乐度。为使每个职员都感到快乐,校长设法使每个职员和其直接上司不会同时参加聚会。
你的任务是设计一份参加聚会者的名单,使总欢乐度最高。
第一行是一个整数 $N$ ;
接下来 $N$ 行对应 $N$ 个职员的欢乐度,第 ii 行的一个整数为第 $i$ 个职员的欢乐度 $p_i$;
接着是学校的人事关系树,每一行格式为 L K ,表示第 $K$ 个职员是第 $L$ 个职员的直接上司,输入以 0 0 结束。
输出参加聚会者获得的最大欢乐度。
解题思路
树形 DP ,设 $f[i][0]$ 表示第 i 个人不参加时他下面的所有人的最大欢乐值, $f[i][1]$ 表示第 i 个人参加时他下面的所有人的最大欢乐值(包括他)。
然后我们找出树根,进行 dfs, $f[i][0]=\sum_{j}^{j\in i.son} max(f[j][0],f[j][1]),f[i][1]=\sum_{j}^{j\in i.son} f[j][0]$ 。
代码
#include<bits/stdc++.h>
using namespace std;
int n;
struct node{//存储树的结点
int x,isroot;
vector<int> son;
};
node s[1000001];
int f[1000001][2];
void dfs(int x){
f[x][0]=0;
f[x][1]=s[x].x;//如果要选这个人,那么他的快乐值要加上
for (int i=0;i<s[x].son.size();i++){
dfs(s[x].son[i]);
f[x][0]+=max(f[s[x].son[i]][0],f[s[x].son[i]][1]);//状态转移
f[x][1]+=f[s[x].son[i]][0];
}
}
int main(){
cin>>n;
for (int i=1;i<=n;i++){
cin>>s[i].x;
s[i].isroot=1;
}
for (int i=1;i<=n-1;i++){
int x,y;
cin>>x>>y;
s[y].son.push_back(x);
s[x].isroot=0;//如果一个节点有父亲,那么它就不是根节点
}
for (int i=1;i<=n;i++){
if (s[i].isroot){
dfs(i);
cout<<max(f[i][0],f[i][1]);
return 0;
}
}
}
LOJ 10160 - 「一本通 5.2 练习 3」周年纪念晚会 / 没有上司的晚会的更多相关文章
- LOJ#10117. 「一本通 4.1 练习 2」简单题
LOJ#10117. 「一本通 4.1 练习 2」简单题 题目描述 题目来源:$CQOI 2006$ 有一个$n$个元素的数组,每个元素初始均为$0$.有$m$条指令,要么让其中一段连续序列数字反转— ...
- LOJ#10064. 「一本通 3.1 例 1」黑暗城堡
LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果 ...
- LOJ #10131 「一本通 4.4 例 2」暗的连锁
LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 \(n\) 个点的树加上 \(m\) 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10 ...
- Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)
题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...
- LOJ #10084. 「一本通 3.3 练习 1」最小圈(二分+SPFA判负环)
题意描述: 见原LOJ:https://loj.ac/problem/10084 题解: 假设所求的平均最小值为X,环上各个边的权值分别为A1,A2...Ak,可以得到: X=(A1+A2+A3+.. ...
- LOJ #10132. 「一本通 4.4 例 3」异象石
题目地址 LOJ 题解 神仙思路.思路参考自<算法竞赛进阶指南>. 考虑维护dfs序中相邻两个石头的距离,那么每次?的答案就是sum/2(首尾算相邻) 然后维护一下拿个平衡树/set维护一 ...
- LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci
题目链接 题目大意 $$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$ $$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$ 求$T[n] ...
- LOJ#10065. 「一本通 3.1 例 2」北极通讯网络
题目链接:https://loj.ac/problem/10065 题目描述 原题来自:Waterloo University 2002 北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数 ( ...
- LOJ#10106. 「一本通 3.7 例 2」单词游戏
题目链接:https://loj.ac/problem/10106 题目描述 来自 ICPC CERC 1999/2000,有改动. 有 NNN 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词. ...
随机推荐
- FileStream功能被禁用
今天还原数据库,遇到如下问题: 网上的解决方法大概是三种: 1.讲数据库备份文件权限设置为“EventOne” 2.打开SQLServer配置管理器,选中服务然后右击“属性”将FileStream相关 ...
- catboost原理以及Python代码
原论文: http://learningsys.org/nips17/assets/papers/paper_11.pdf catboost原理: One-hot编码可以在预处理阶段或在训练期间 ...
- 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型Script
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介 ...
- 【小记】FreeRTOS任务创建后但任务中为空时运行错误
FreeRTOS任务创建后但任务中无语句为空时运行错误 会死在文件<port.c>中下边函数处 static void prvTaskExitError( void ){ /* A fun ...
- 【转】I²C总线上拉电阻阻值如何选择?
I2C总线为何需要上拉电阻? I2C(Inter-Intergrated Circuit)总线是微电子通信控制领域中常用的一种总线标准,具有接线少,控制方式简单,通信速率高等优点. I2C总线的内部结 ...
- 洛谷P3935 Calculating(整除分块)
题目链接:洛谷 题目大意:定义 $f(x)=\prod^n_{i=1}(k_i+1)$,其中 $x$ 分解质因数结果为 $x=\prod^n_{i=1}{p_i}^{k_i}$.求 $\sum^r_{ ...
- StratifiedKFold与GridSearchCV版本前后使用方法
首先在sklearn官网上你可以看到: 所以,旧版本import时: from sklearn.cross_validation import GridSearchCV 新版本import时: fro ...
- SQL2005分页存储过程(支持多表联接)
Code /********************************************************* * 作 用:数据分页(完整SQL分页存储过程(支持多表联接)) ...
- 生成ssh-key for GIthub
在Github里,如果我们想通过ssh的方式进行身份验证,我们就需要建立ssh-key: 方法一: git GUI,点击help,选择Generate ssh key
- Python正则表达式(regular expression)简介-re模块
Python正则表达式(regular expression)简介-re模块 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 就其本质而言,正则表达式(或RE模块)是一种小型的,高度 ...