派对的最大快乐值

news2024/9/24 3:18:15

与其明天开始,不如现在行动!

文章目录

      • 派对的最大快乐值
  • 💎总结


派对的最大快乐值

题目

员工信息的定义如下:

公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、没有环的多叉树。树的头节点是公司唯一的老板。除老板之外的每个员工都有唯一的直接上级。叶节点是没有任何下属的基层员工(subordinates列表为空),除基层员工外,每个员工都有一个或多个直接下级。

class Employee{
	public int happy; //这名员工可以带来的快乐值
	List<Employee> subordinates; //这名员工有哪些直接下级
}

派对的最大快乐值

这个公司现在要办party,你可以决定哪些员工来,哪些员工不来,规则:

1.如果某个员工来了,那么这个员工的所有直接下级都不能来

2.派对的整体快乐值是所有到场员工快乐值的累加

3.你的目标是让派对的整体快乐值尽量大给定一棵多叉树的头节点boss,请返回派对的最大快乐值

员工举例
在这里插入图片描述

代码实现

public class MaxHappy {
    public static class Employee{
        public int happy;
        List<Employee> next;
        public Employee(int happy){
            this.happy = happy;
            next = new ArrayList<>();
        }
    }

    public static class Info {
        public int yes;
        public int no;
        public Info(int yes, int no) {
            this.yes = yes;
            this.no = no;
        }
    }
    public static int getMaxHappy(Employee boss) {
        if (boss == null) {
            return 0;
        }
        Info allHappy = process(boss);
        return Math.max(allHappy.yes, allHappy.no);
    }

    private static Info process(Employee node) {
        // 基层员工的信息
        if (node.next.isEmpty()) {
            return new Info(node.happy, 0);
        }
        int yes = node.happy;
        int no = 0;
        for (Employee next : node.next) {
            // 递归
            Info nextInfo = process(next);
            // 父节点去的话,子节点都不去 的最大快乐值
            yes += nextInfo.no;
            // 父节点不去,子节点在去或不去的快乐值中选最大的
            no += Math.max(nextInfo.yes, nextInfo.no);
        }
        return new Info(yes, no);
    }

    // 测试
    public static void main(String[] args) {
        Employee boss = new Employee(10);
        Employee employee0 = new Employee(10);
        Employee employee1 = new Employee(5);
        Employee employee2 = new Employee(6);
        Employee employee3 = new Employee(7);
        Employee employee4 = new Employee(3);
        Employee employee5 = new Employee(2);
        Employee employee6 = new Employee(4);
        Employee employee7 = new Employee(1);
        Employee employee8 = new Employee(2);
        Employee employee9 = new Employee(3);

        boss.next.add(employee0);
        employee0.next.add(employee1);
        employee0.next.add(employee2);
        employee0.next.add(employee3);
        employee1.next.add(employee4);
        employee2.next.add(employee5);
        employee3.next.add(employee6);
        employee4.next.add(employee7);
        employee5.next.add(employee8);
        employee6.next.add(employee9);

        System.out.println(getMaxHappy(boss));
    }
}

💎总结

本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


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

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

相关文章

Win环境中安装Jenkins指南

目录 安装Java环境 下载并安装Jenkins Jenkins版本 启动Jenkins 如何删除Jenkins 安装Java环境 访问 Oracle官方网站 下载并安装JDK 安装完成后&#xff0c;设置系统环境变量 JAVA_HOME 到你的 JDK 安装路径&#xff0c;并将 %JAVA_HOME%\bin 添加到系统 PATH 中。 下载…

css实现姓名两端对齐

1.1 效果 1.2 主要代码 text-align-last: justify; 1.3 html完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&quo…

外包干了3年,技术退步明显...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

【UE】UEC++ CurveFloat、CurveVector、CurveLinearColor

目录 【UE】UEC CurveFloat、CurveVector、CurveLinearColor 一、CurveFloat 二、CurveVector 三、CurveLinearColor 四、材质设置 五、运行结果 【UE】UEC CurveFloat、CurveVector、CurveLinearColor 一、CurveFloat #pragma once#include "CoreMinimal.h" …

人工智能时代AIGC绘画实战

系列文章目录 送书第一期 《用户画像&#xff1a;平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

RAG落地实践、AI游戏开发、上海·深圳·广州线下工坊启动!星河社区重磅周

飞桨星河社区在成立的5年以来&#xff0c;已汇集660万AI开发者&#xff0c;覆盖深度学习初学者、在职开发者、企业开发者、高校教师、创业者等&#xff0c;已成为AI领域最具影响力的社区之一&#xff0c;无论是AI爱好者还是AI开发者&#xff0c;都能在这里探索AI的无限可能。飞…

如何无线桥接路由器,让你的网络覆盖范围变大,做到网络信号无缝连接

你是否希望通过在两个路由器之间创建无线网桥(网络桥接)来扩大网络覆盖范围?好吧,你来对地方了!在当今日益互联的世界,拥有一个强大可靠的网络比以往任何时候都更重要。 无线网桥允许你无线连接两个或多个路由器,有效地扩展网络覆盖范围,并在更大的区域提供无缝的互联…

算法-滑动窗口

一、滑动窗口思想 概念 在数组双指针里&#xff0c;我们介绍过 "对撞型" 和 "快慢型" 两种方式&#xff0c;而滑动窗口思想就是快慢型的特例。 实际使用 计算机网络中有滑动窗口协议&#xff08;Sliding Window Protocol&#xff09;&#xff0c;该协议…

02、pytest环境准备

工具准备 python官网下载&#xff1a;https://www.python.org/pycharm官网下载&#xff1a;https://www.jetbrains.com.cn/en-us/pycharm/pytest官方文档&#xff1a;https://docs.pytest.org/en/7.4.x/python-office官网文档&#xff1a;http://www.python-office.com/ 参考…

OA系统是什么,能用低代码开发吗?

OA是什么&#xff1f;管办公室活动的 OA是Office Automation&#xff08;办公自动化&#xff09;的简称&#xff0c;原是指利用电脑进行全自动的办公&#xff0c;现在基本所有和办公相关的系统都可以称作是OA。绝大部分企业将OA用于企业内部的协作沟通&#xff0c;处理企业内部…

NSSCTF 文件上传漏洞题目

目录 [SWPUCTF 2021 新生赛]easyupload1.0 [SWPUCTF 2021 新生赛]easyupload2.0 [SWPUCTF 2021 新生赛]easyupload3.0 [SWPUCTF 2021 新生赛]easyupload1.0 这是一个文件上传漏洞的题目 我们的思路是上传一句话木马&#xff0c;用工具进行连接 先编写一句话木马 将文件后缀…

CSS实现小球边界碰撞回弹

如何通过CSS实现一个物体在屏幕中无限的边界碰撞回弹呢&#xff1f;我们可以使用动画效果实现 代码 我们只做一个小球&#xff0c;通过定位属性叠加动画的方式&#xff0c; 让小球在屏幕中进行运动&#xff0c;通过设置animation的alternate属性来设置回弹。最后&#xff0c;只…

为什么有很多公司的 ERP 系统用得还不如 Excel?

回顾ERP的发展历史&#xff0c;我们不难发现&#xff0c;ERP业务包含范围越来越广&#xff0c;但是让信息化适应业务、辅佐业务&#xff0c;是根植在ERP的诞生基因里面的。 ERP信息化的概念看上去如此美妙&#xff0c;但是在国内企业落地的时候&#xff0c;却出现了很多问题——…

企业课——配置两条静态路由

在广播型的接口&#xff08;如以太网的接口&#xff09;可以不配置出接口&#xff0c;但是要配置下一跳 路由跟踪&#xff1a;tracert ip 1.配置IP地址 2.配置两条路线的静态路由 iprouter-static 目的网段 掩码 出接口 下一跳 3.实现选路&#xff0c;在静态路由配置后…

渗透技巧之403绕过【总结】

文章目录 渗透技巧之403绕过【总结】0x01 前言0x02 背景1.什么是网页403&#xff1f;2.什么是403绕过&#xff1f;3.造成403的成因 0x03 绕过方式1.绕过IP限制2.url覆盖绕过3.扩展名绕过&#xff08;路径fuzz&#xff09;4.更换协议版本5.HTTP 请求方法fuzz6.修改Referer7.修改…

Interpretable Multimodal Misinformation Detection with Logic Reasoning

原文链接 Hui Liu, Wenya Wang, and Haoliang Li. 2023. Interpretable Multimodal Misinformation Detection with Logic Reasoning. In Findings of the Association for Computational Linguistics: ACL 2023, pages 9781–9796, Toronto, Canada. Association for Computa…

智能全彩屏负氧离子监测站-生态环境知识科普

随着人们对健康和环境保护的关注度不断提高&#xff0c;一款名为 WX-FLZ50智能全彩屏负氧离子监测站的新产品应运而生。这款产品能够实时监测环境中的负氧离子浓度&#xff0c;为人们提供空气质量信息&#xff0c;帮助人们更好地了解和保护自身所处的环境。 WX-FLZ50智能全彩屏…

pyecharts可视化作图4:行业分布-条形图

pyecharts做条形图功能也非常强大&#xff0c;本文也只展示基本的功能。 1. 源代码 import pandas as pd from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType# 构建模拟数据 data_dict {行业名称: {0: 钢铁,…

如何解决vue中的组件样式冲突

目录 1&#xff1a;组件样式冲突问题 2&#xff1a;导致组件之间样式冲突的根本原因是&#xff1a; 3&#xff1a;问题演示 4&#xff1a;通过设置scoped解决组件之间样式冲突问题 5&#xff1a;设置scoped解决组件样式冲突的原理 6&#xff1a;使用deep修改子组件的样式…

TikTok新闻视角:短视频如何改变信息传递方式?

随着数字时代的不断发展&#xff0c;信息传递的方式也在不断演变。近年来&#xff0c;短视频平台TikTok崭露头角&#xff0c;通过其独特的15秒短视频形式&#xff0c;逐渐在新闻传播领域占据一席之地。本文将深入探讨TikTok在新闻视角下是如何改变信息传递方式的&#xff0c;以…