刷好题,固基础-2

7-5 运动会

T公司的员工层级关系可以表示成一棵树,员工X是员工Y的直接领导,则在树中X是Y的父结点。公司拟组织一场运动会,但为了避免尴尬,每个员工都不想与自己的直接领导一起参赛。假定每个员工都对应一个权重(领导的权重不一定比下属大),请你编写程序,邀请若干员工参赛,使得参赛人员的总权重和最大。

输入格式:

第一行一个正整数n,表示公司的员工人数,员工编号为1...n,n不超过3000。
接下来n行,每行1个整数,表示每个员工的权重,值域为[−27,27)。
接下来n-1行,每行为两个空格间隔的整数X和Y,表示Y是X的直接领导。

输出格式:

输出为一个整数,表示参赛员工的最大权重之和。

输入样例:

7
2
2
2
2
2
2
2
2 1
3 1
4 2
5 2
6 3
7 3

输出样例:

10

AC代码--动态规划 

#include<bits/stdc++.h>
using namespace std;
const int N = 3010;
vector<int> v[N];
int dp_no[N];
int dp_join[N];
int n, root = 1, vi[N], w[N];void solve(int root){if(v[root].size() == 0){dp_join[root] = w[root];dp_no[root] = 0;return ;}dp_join[root] = w[root];for(int i = 0; i < v[root].size(); ++i){solve(v[root][i]);//如果当前节点被选,则需要w[当前节点] + 不被选的所有节点的值dp_join[root] += dp_no[v[root][i]];//如果当前节点未被选,则加上子节点被选or未被选的最大值(确保值最大化)dp_no[root] += max(dp_no[v[root][i]], dp_join[v[root][i]]);}/*因为当前结点的状态由它的子节点的状态推导而来,所以需要先dfs当前结点的子结点把它的子节点的两种状态计算出来,再回溯回来更新当前结点的两种状态当它的所有子节点的两种状态全部考虑完毕,当前结点的两种状态也随之确定*///当前结点的状态一dp_join[root]=wi[root]+每个子结点的状态二dp_no[wi[v[root][i]]]//上面这句话说明如果选了当前结点,那么它的子节点全部不能选,那只能选择子节点没有选的状态相加//当前结点的状态二dp_no[root]=每个子结点的状态一/状态二的最大值//上面这句话说明如果没选当前结点,那么它的子节点全部能选能不选,那选择子节点两种状态的较大者相加
}int main(){cin >> n;for(int i = 1; i <= n; ++i)    cin >> w[i];for(int i = 1; i < n; ++i){int x, y;    cin >> x >> y;v[y].push_back(x);vi[x] = 1;}for(int i = 1;i <= n; ++i)    if(vi[i] == 0){root = i; break;}solve(root);cout << max(dp_join[root], dp_no[root]);return 0;
}

 

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

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

相关文章

二叉树|450.删除二叉搜索树中的节点

力扣题目链接 class Solution { public:TreeNode* deleteNode(TreeNode* root, int key) {if (root nullptr) return root; // 第一种情况&#xff1a;没找到删除的节点&#xff0c;遍历到空节点直接返回了if (root->val key) {// 第二种情况&#xff1a;左右孩子都为空&…

使用AI 编写一个Mybatis SQL日志解析工具

使用AI 编写一个Mybatis SQL日志解析工具 背景 尝试使用智谱清言 AI 编写一个工具&#xff0c;将Mybatis SQL日志解析为可以执行的SQL语句。 操作 准备初始代码 首先网站上找了一个有BUG的简单的实现 https://blog.csdn.net/x541211190/article/details/107410409 用提示…

【WEEK4】 【DAY5】AJAX第二部分【中文版】

2024.3.22 Friday 接上文【WEEK4】 【DAY4】AJAX第一部分【中文版】 目录 8.4.Ajax异步加载数据8.4.1.新建User.java8.4.2.在pom.xml中添加lombok、jackson支持8.4.3.更改tomcat设置8.4.4.修改AjaxController.java8.4.5.新建test2.jsp8.4.5.1.注意&#xff1a;和WEB-INF平级&…

.NET Core教程:入门与实践实例

.NET Core教程&#xff1a;入门与实践实例 在信息技术飞速发展的今天&#xff0c;掌握一门高效的编程技术成为了每个开发者不可或缺的技能。在众多编程框架中&#xff0c;.NET Core以其跨平台、高性能和易扩展的特性&#xff0c;受到了广大开发者的青睐。本文将通过实例&#…

一文解析:固定电感器结构、作用及其与扼流圈和可变电感器的差异

固定电感器是一种电子元件又称固定线圈&#xff0c;用于在电路中产生固定的电感值。电感是指导致电流变化时产生电动势的能力&#xff0c;通常用亨利&#xff08;Henry&#xff09;作为单位。固定电感器的电感值是预先确定的&#xff0c;通常以特定的数值标识&#xff0c;例如1…

免疫荧光染色

每次要将手/样品伸进细胞培养箱&#xff0c;生物培养平台D 中时&#xff0c;都要喷洒酒精消毒。 以两个样品/两个培养基为例 从细胞培养箱&#xff08;37度&#xff0c;5%CO2浓度&#xff09;取出要染色的细胞&#xff1b;放在显微镜下观察&#xff0c;观察细胞是否趴壁以及细…

【正点原子FreeRTOS学习笔记】————(10)FreeRTOS时间管理

这里写目录标题 一、延时函数介绍&#xff08;了解&#xff09;二、延时函数解析&#xff08;熟悉&#xff09;三、延时函数演示实验&#xff08;掌握&#xff09; 一、延时函数介绍&#xff08;了解&#xff09; 相对延时&#xff1a;指每次延时都是从执行函数vTaskDelay()开始…

onnxruntime 中的 Gather 算子

上一篇文章中介绍了 Division by Invariant Integers using Multiplication 的原理&#xff0c;很多框架均才用该算法优化除法运算。onnxruntime 是已知实现中最为简洁的&#xff0c;因此本文结合 onnxruntime 的 Gather 实现进行介绍。 Gather 算子是一个索引类算子&#xff0…

Python(django)之单一接口展示功能前端开发

1、代码 建立apis_manage.html 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav c…

S7-200 SMART 选型指南及详细技术参数

S7-200 SMART 选型指南 选型指南 硬件能力 功能 CPU外形结构与电源需求计算 直流安装 交流安装 电源需求与计算 S7-200 SMART CPU模块提供5VDC和24VDC电源&#xff1a; CPU有一个内部电源&#xff0c;用于为CPU、扩展模块、信号板提供电源和满足其他24 VDC用户电源需求。请使…

数据结构二叉树计算公式

这些是关于二叉树、完全二叉树、B-树以及树的深度和高度的一些基本概念和重要性质。让我们一一解读这些性质: 二叉树的计数公式:给定 n 个节点,可以构造的不同二叉树数量是 (\frac{(2n)!}{n! \cdot (n+1)!})。这是一个来自组合数学的结果,称为 Catalan 数。这个公式非常重要…

鸿蒙HarmonyOS应用开发之使用Node-API接口进行线程安全开发

场景介绍 napi_create_threadsafe_function是Node-API接口之一&#xff0c;用于创建一个线程安全的JavaScript函数。主要用于在多个线程之间共享和调用&#xff0c;而不会出现竞争条件或死锁。例如以下场景&#xff1a; 异步计算&#xff1a;如果需要进行耗时的计算或IO操作&a…

Scala介绍与环境搭建

Scala环境搭建与介绍 一、Scala环境搭建 1、环境准备与下载 2、验证Scala 3、IDEA新建项目&#xff0c;配置Scala&#xff0c;运行Hello world 二、Scala介绍 1、Scala 简介 2、Scala 概述 一、Scala环境搭建 1、环境准备与下载 JDK1.8 Java Downloads | Oracle 下载需求版本…

如何将python项目转变成deb安装包

先将python项目转变成可执行文件 1. 首先确保你的python项目可以正常执行 2.安装pyinstaller模块&#xff0c;pip install pyinstaller -i Simple Index 3.确定好你的项目的文件入口&#xff0c;也就是运行的文件.py 4. 开始打包成单文件&#xff0c;pyinstaller -F <第…

美团春招内幕揭秘:2024最全面Spring CORS面试题解析,跨域问题大师级指南!

随着现代Web应用越来越多地采用前后端分离的架构&#xff0c;跨域资源共享&#xff08;CORS&#xff09;成为了Web开发中不可或缺的一部分。对于构建复杂、响应迅速的Web应用&#xff0c;了解并正确实施CORS策略是确保应用安全、高效运行的关键。美团&#xff0c;作为中国领先的…

STM32学习笔记(6_7)- TIM定时器的编码器接口原理

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

【Java程序设计】【C00374】基于(JavaWeb)Springboot的社区疫情管理系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

教学软件哪个好?这个一站式智慧教学系统值得推荐!

过去培训机构老师授课的场景主要在线下&#xff0c;可以使用大屏幕 PPT 来完成培训的交付&#xff0c;而现在随着数字化基础设施的完善&#xff0c;同时为了尽可能覆盖更多的人&#xff0c;依赖线下的培训场景也逐步转移到线上来完成&#xff0c;因此也对在线教学工具产生了需…

服务器硬件基础知识详解

服务器硬件基础知识涵盖了多个关键组件及其功能&#xff0c;以下是详细的介绍&#xff1a; 一. 处理器&#xff08;CPU&#xff09;&#xff1a; 处理器&#xff08;CPU&#xff0c;Central Processing Unit&#xff09;&#xff0c;即中央处理器&#xff0c;是电子计算机的主…

【前端学习——css篇】3.隐藏元素的方法

https://github.com/febobo/web-interview 3.隐藏元素的方法 diplay:none; 元素在页面消失&#xff0c;并且不占据页面空间 opacity:0; 设置元素透明度&#xff0c;仅元素不可见&#xff0c;占用空间 visibility:hidden; 元素不可见&#xff0c;占据页面空间&#xff0c;无…