没有上司的舞会 树形DP

没有上司的舞会 树形DP

 

 

题意:有n个职员可以参加舞会,每个职员有一个欢乐值,职员之间就像一颗树,每个父节点都是子节点的上司,同时一个职员不可以他的直接上司一起参加,。现在选一些员工参加舞会,求参加员工的可能最大快乐值。

做法:设f[i][0]表示i代表的子树之下,i职员不参加的最大快乐值,f[i][1]表示i代表的子树之下,i职员参加的最大快乐值。则状态转移方程得

f[i][0]+=max(f[j][1],f[i][0])如果i不参加,那么他的每个儿子j可以选择参加或者不参加,累加每个儿子的较大的值。

f[i][1]+=f[j][0]如果i参加,那么它需要累加它每个儿子不参加时的最大快乐值。

然后就是从顶头上司根节点开始,深度优先遍历即可

#include<bits/stdc++.h>
using namespace std; int f[1005][2]; int val[1005]; vector<int> v[1005]; int ans; int vis[1005]; void dp(int t) { f[t][0]=0; f[t][1]=val[t]; for(int i=0;i<v[t].size();i++) { int y=v[t][i]; dp(y); f[t][0]+=max(f[y][1],f[y][0]); f[t][1]+=f[y][0]; } } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&val[i]); for(int i=1;i<=n-1;i++) { int a,b; scanf("%d%d",&a,&b); v[b].push_back(a); vis[a]=1; } int root; for(int i=1;i<=n;i++) { if(vis[i]==0) { root=i;break; } } dp(root); printf("%d",max(f[root][1],f[root][0])); }

 

转载于:https://www.cnblogs.com/dongdong25800/p/10834719.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100939.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MJRefresh框架的使用

    MJRefresh框架的使用MJRefresh

    2025年10月25日
    4
  • spring注解有哪些_Spring 注解

    spring注解有哪些_Spring 注解Spring注解@Configuration一.@Configuration的作用二.@Configuration的Spring容器启动方式三.不加@Configuration的@Bean的解

    2022年8月1日
    4
  • plsql直接连接远程数据库_plsql远程连接oracle

    plsql直接连接远程数据库_plsql远程连接oracle前言每次安装Oracle以后,都会出现使用plsql连接不上的问题!多次重启电脑、重装系统的磨人经历之后,终于做出这么一篇文章,希望能帮助广大技术人员减少一些时间,顺利进行连接。注:也可以用plsql连接远程数据库(只要有oracle的network\admin\tnsnames.ora就行)。首先下载64位oracle以及32位轻量级客户端(注意版本的对应,我用的是11g的oracl……

    2022年10月20日
    2
  • Linux下编写GT911触摸驱动

    Linux下编写GT911触摸驱动问题一:资源获取Gt911数据手册在韦老师给的资料里,路径为\06_Datasheet\Extend_modules\7寸LCD模块\电容触控芯片GT911Datasheet_121120(海威思.pdf问题二:需要准备哪些知识1.能够修改设备树2.能够编写字符设备驱动3.能够在linux下编写中断程序4.能够在linux下编写IIC收发程序5.了解input子系统6.移植tslib(用于校准,测试触摸屏)gt911硬件连接(韦老师的板子):可以看到gt911只

    2022年6月16日
    310
  • [Motion]MPU9250的详细功能

    简述接下来的内容将对MPU9250的基本的功能进行详细的介绍,主要会分模块进行阐述。时钟MPU9250有两个内部时钟源,以及一个PLL。内部时钟源:时钟源说明内部振荡器功耗低,但时钟精度略差X,Y或Z方向的GyroMEMS时钟,功耗较高,但时钟精确(只要Gyro一经启用,就会使用该时钟源)时钟的选择需要综合平衡时钟精度和功耗两个因素,所以从MPU9250的性

    2022年4月8日
    40
  • pstack使用和原理[通俗易懂]

    pstack使用和原理[通俗易懂]pstack使用和原理http://www.cnblogs.com/mumuxinfei/p/4366708.html前言:  最近小组在组织深入剖析Nginx>>的读书会,里面作者提到了pstack这个工具.之前写JAVA程序,对jstack这个工具,非常的喜欢,觉得很有用.于是想比较下pstack和jstack的异同.   和jstack一样,psta

    2025年11月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号