Acwing.285 没有上司的舞会(动态规划)

news2024/9/29 21:18:20

题目

Ural大学有N名职员,编号为1~N。
他们的关系就像—棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数H给出,其中1≤i≤N。
现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。
在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。

输入格式

第一行一个整数N。
接下来N行,第i行表示i号职员的快乐指数H;。
接下来N-1行,每行输入—对整数L,K,表示K是L的直接上司。最后一行输入0,0。

输出格式

输出最大的快乐指数。

数据范围

1<N<6000,—128<Hi≤127

  • 输入样例:
7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
0 0
  • 输出样例:
5

题解

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author akuya
 * @create 2023-07-28-21:52
 */
public class ball {
    static int N=6010;
    static int n;
    static int happy[]=new int[N];
    static int h[]=new int[N];
    static int e[]=new int[N];
    static int ne[]=new int[N];
    static int idx;
    static int f[][]=new int[N][2];
    static boolean has_father[]=new boolean[N];

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        for(int i=1;i<=n;i++)happy[i]=scanner.nextInt();

        Arrays.fill(h,-1);
        for(int i=0;i<n-1;i++){
            int a,b;
            a=scanner.nextInt();
            b=scanner.nextInt();
            has_father[a]=true;
            add(b,a);
        }

        int root=1;
        while(has_father[root])root++;
        dfs(root);
        System.out.println(Math.max(f[root][0],f[root][1]));
    }

    public static void add(int a,int b){
        e[idx]=b; ne[idx]=h[a];h[a]=idx++;
    }

    public static void dfs(int u){
        f[u][1]=happy[u];
        for(int i=h[u];i!=-1;i=ne[i]){
            int j=e[i];
            dfs(j);

            f[u][0]+=Math.max(f[j][0],f[j][1]);
            f[u][1]+=f[j][0];
        }
    }
}

思路

本题为树形动态规划,思路如下图
在这里插入图片描述
在这里插入图片描述
动态转移方程如上图,结合之前学习的静态链表即可完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/804170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js通过下标获取对象值

var a {1: a,2: b,3: c,4: d}var keys Object.keys(a)var values Object.values(a)console.log(keys , values)# 建议使用 console.log(Object.keys(a)[2] : Object.values(a)[2])#无意义 console.log(Object.keys(a)[3] : a[Object.keys(a)[3]])

下级平台级联视频汇聚融合平台EasyCVR,层级显示不正确的原因排查

视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…

CAN转EtherNet/IP网关can协议是什么意思

你是否曾经遇到过不同的总线协议难以互相通信的问题&#xff1f;远创智控的YC-EIP-CAN网关为你解决了这个烦恼&#xff01; 远创智控YC-EIP-CAN通讯网关是一款自主研发的设备&#xff0c;它能够将各种CAN总线和ETHERNET/IP网络连接起来&#xff0c;解决不同总线协议之间的通信…

C语言队列实现参考示例

C语言队列实现参考示例 目录 C语言队列实现参考示例前言1 代码实现1.1 实现方案1.2 代码编写 结束语 前言 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;…

Java 多线程练习

目录 1.定时器操作&#xff08;实现电脑定时关机&#xff09;。 2. 每个月的月末(02:00:00) 执行一次代码 3. 模拟售票 4. 用15个线程实现&#xff0c;求123456789 之间放-和为100的表达式&#xff08;11个结果&#xff09;&#xff0c;如果一个线程求出结果&#xff0c; 立…

【LeetCode】383. 赎金信

题目&#xff1a;383. 赎金信 由于此题只含有小写字母,并且magazine里面的字母不可重复使用. 故首先用一个长度为26的整形数组记录magazine里字母出现的次数。 再用这个整形数组跟ransomeNote进行遍历比较&#xff0c;当数组中出现-1时&#xff0c;说明false,否则true. 代码&am…

大数据Flink(五十二):Flink中的批和流以及性能比较

文章目录 Flink中的批和流以及性能比较 ​​​​​​​​​​​​​​一、Flink中的批和流

python与深度学习(九):CNN和cifar10

目录 1. 说明2. cifar10实战2.1 导入相关库2.2 加载数据2.3 数据预处理2.4 数据处理2.5 构建网络模型2.6 模型编译2.7 模型训练2.8 模型保存2.9 模型评价2.10 模型测试2.11 模型训练结果的可视化 3. cifar10的CNN模型可视化结果图4. 完整代码5. 改进后的代码和结果 1. 说明 本…

史上最强,Python自动化测试框架整理,搭建框架看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 什么是测试框架呢…

明星代言注意事项:确保代言活动成功的关键要素

对于商家而言&#xff0c;聘请明星代言自己的品牌产品&#xff0c;无非就是为了利用明星的人气为品牌加持热度&#xff0c;吸引明星粉丝和消费者的关注&#xff0c;增加产品转化&#xff0c;塑造品牌形象。明星代言是一项重要的市场营销策略&#xff0c;但同时也需要注意一些关…

美化与保护合二为一:3个功能厉害的水印app

每个人都有自己珍视的照片回忆&#xff0c;但在互联网上共享这些照片时&#xff0c;担心他人未经允许使用它们是很常见的。幸运的是&#xff0c;现在有了加水印软件&#xff0c;我们可以以有效的方式保护我们的珍贵照片。通过在图片上添加个性化的水印&#xff0c;你可以在不影…

textarea文本高亮选中

最近在实现原文/译文句段高亮对比显示&#xff0c;和有道翻译类似&#xff0c;如下图所示&#xff1a; 最初的解决方案是采用富文本编辑器&#xff0c;把所有句段信息都用HTML标签包裹&#xff0c;操作空间比较大&#xff0c;页面上需要的功能几乎都可以实现&#xff0c;但是由…

串口通讯接口类型:TTL、RS232和RS485(电平标准)

串口通讯接口类型&#xff1a;TTL、RS232和RS485 在串口通信中&#xff0c;常用的接口类型包括TTL、RS-232和RS-485&#xff0c;TTL、RS-232、RS422、RS-485是指的电平标准(电信号)。 通信协议规定了数据传输的规则和格式&#xff0c;包括数据的起始位、停止位、数据位数、校…

docker 搭建jenkins

1、拉取镜像 docker pull jenkins/jenkins:2.4162、创建文件夹 mkdir -p /home/jenkins_mount chmod 777 /home/jenkins_mount3、运行并构建容器 docker run --restartalways -d -p 10240:8080 -p 10241:50000 -v /home/jenkins_mount:/var/jenkins_home -v /etc/localtime:…

从零开始构建基于YOLOv5的目标检测系统

本博文从零开始搭建基于YOLOv5模型的目标检测系统&#xff08;具体系统参考本博主的其他博客&#xff09;&#xff0c;手把手保姆级完成环境的搭建。 &#xff08;1&#xff09;首先Windows R输入cmd命令后打开命令窗口&#xff0c;进入项目目录&#xff0c;本博文以野生动物…

无涯教程-jQuery - jQuery.ajaxSetup( options )方法函数

jQuery.ajaxSetup(options)方法为将来的AJAX请求设置全局设置。 jQuery.ajaxSetup( options ) - 语法 $.ajaxSetup( options ) 这是此方法使用的所有参数的描述- options - 一组配置Ajax请求的键/值对&#xff0c;所有选项都是可选的。 Sr.No.Option & Remark1 asy…

Stack

文章目录 定义分类静态栈动态栈 算法应用 定义 在静态内存当中分配的叫做栈&#xff0c;在动态内存中分配的叫做堆。 **红色椭圆圈当中的就是在栈中分配的&#xff0c;蓝色下划线的就是在堆里分配的。**栈和堆表示的是分配数据的一种方式。静态局部变量是通过压栈和出栈来分配…

网络安全行业相关证书

一&#xff1a;前言 对于考证这个话题&#xff0c;笔者的意见是&#xff1a;“有比没有好&#xff0c;有一定更好&#xff0c;但不一定必须&#xff1b;纸上证明终觉浅&#xff0c;安全还得实力行”。很多人对于各种机构的考证宣传搞得是云里雾里&#xff0c;不知道网络安全行业…

【Java练习题汇总】《第一行代码JAVA》网络编程篇集合体系篇,汇总Java练习题——Socket 与ServerSocket、List和Set、Map~

Java练习题 网络编程篇&集合体系篇 1️⃣ 网络编程篇&集合体系篇 1️⃣ 网络编程篇&集合体系篇 一、填空题 在类集中存放单值的最大父接口是___________ &#xff0c;存放一对值的最大父接口是___________ 。___________ 接口保存的数据是不允许重复的&#xff…

c语言复合赋值符和运算符的优先级问题

结论&#xff1a; 复合赋值符的优先级小于运算符 【练习1】 a * a / b的运算顺序是什么&#xff1f; a / b * a 【练习2】 x / 3 2 * 3 2 / 3 6 2 x 0