没有上司的晚会 树型DP
来源:互联网 发布:泰兰德的记忆知乎 编辑:程序博客网 时间:2024/05/16 18:29
树形DP是DP中的一种,还是比较容易的。
一般采用树形DP,都是从叶子到根. 也有从根到叶子的听说,目前没见到。
做了两题
1.
没有上司的晚会
背景
有个公司要举行一场晚会。
为了能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会邀请他的上司
(上司的上司,上司的上司的上司……都可以邀请)。
题目
每个参加晚会的人都能为晚会增添一些气氛,求一个邀请方案,使气氛值的和最大。
输入格式
第1行一个整数N(1<=N<=6000)表示公司的人数。
接下来N行每行一个整数。第i行的数表示第i个人的气氛值x(-128<=x<=127)。
接下来每行两个整数L,K。表示第K个人是第L个人的上司。
输入以0 0结束。
输出格式
一个数,最大的气氛值和。
Sample Input
7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0
Sample Output
5
这一题应该是默认一个人没有两个直接上司的,所以形成的是一个树。
这颗树的转移方程还是比较容易想到的
F[i][0] 表示第i颗子树(i节点是这颗树的根,也就是其他人的上司..不一定是直接上司),i不参加
F[i][1] 表示i参加
那么
F[i][0] = ∑max{ F[i.son[j]][1] , F[i.son[j]][0] }他的直接下司可去可不去
F[i][1] = ( ∑F[i.son[j]][0] ) + S[i]他的直接下司不可去
其中涉及到一个问题
就是一个根可能有多个孩子,怎样去表示。我们发现把这颗树建立起来以后,只要能够轻松地依次遍历某个根的所有孩子就可以了。
所以我采用了表示兄弟的方法
我保存了一个根的第一个孩子和最后一个孩子,而next[i]表示i节点的下一个兄弟 没有为-1
father我是用来找根的
我用了一个递归。代码核心:
完整代码:
- 没有上司的晚会 树型DP
- 没有上司的晚会 树形DP
- 没有上司的晚会(树形DP)
- 没有上司的晚会
- 没有上司的晚会
- SSL 1607 没有上司的晚会 树形dp
- ural 1039 没有上司的晚会 树形dp
- #bzoj1378#没有上司的晚会(树形DP基础)
- PUKOJ2342 Anniversary party(没有上司的晚会)
- 树形动态规划 ~~没有上司的晚会
- 没有上司的晚会(party)
- 没有上司的晚会 树形动态规划
- Ural 1039 没有上司的晚会
- SSL 1607 没有上司的晚会
- [Ural 1039] 没有上司的晚会
- 蓝桥杯训练:动态规划——没有上司的晚会
- 没有上司的舞会--经典树形DP
- 树形DP 没有上司的舞会
- MYSQL常用命令列表
- 加分二叉树 树型DP
- IDS 是什么
- linux的chmod,chown命令使用详解
- asp.net网页版斗地主 已提供下载(开源) 测试版
- 没有上司的晚会 树型DP
- 宿舍舍费管理系统
- 达芬奇五年沉浮—嵌入式处理器架构之争决战2012
- static 关键字用途
- C的关键字——const的理解和用法
- 基于ARM 的Linux 的启动分析报告——ARM+Linux的启动分析(5)
- GPG
- 任务是如何调度(切换)的?
- GCC-3.4.6源代码学习笔记(50)