没有上司的舞会(树形dp)

news2025/7/14 23:48:05

思路:

(1)每个人有一个开心值,并且人物关系呈树形分布。

(2)我们所求为根部人物及其下属的总开心值,显然存在某种递归关系;注意到要求是不能直系父子同时出现,于是考虑树形dp递推,关键在于本元素出现或者不出现,以此利用性质对集合进行划分,构建f[u][0]与f[u][1]分别描述不用u与用u的最佳方案,那么对于f[ufather][0] = \Sigmamax(f[u][0],f[u][1]) + happy[ufather];f[ufather][1] = \Sigmaf[u][0];

(3)最后对f[uzuzong][0]与f[uzuzong][1]取最大即为整体最值。

代码:

#include<bits/stdc++.h>

using namespace std;

const int N = 6e3 + 10;

int st[N],ha[N];
int h[N],e[N],ne[N],idx;
int f[N][2];

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

void dfs(int u)
{
    f[u][1] = ha[u];
    
    for(int i = h[u];i != -1;i = ne[i])
    {
        int j = e[i];
        dfs(j);
        
        f[u][1] += f[j][0];
        f[u][0] += max(f[j][1],f[j][0]);
    }
    return;
}

int main()
{
    int n;
    cin >> n;
    for(int i = 1;i <= n;i ++)
        cin >> ha[i];
    
    memset(h,-1,sizeof h);
    for(int i = 1;i <= n - 1;i ++)
    {
        int l,k;
        cin >>l >> k;
        
        add(k,l);
        st[l] = 1; 
    }
    
    int fa;
    for(int i = 1;i <= n;i ++)
        if(st[i] == 0)
        {
           fa = i;
           break;
        }
    
    dfs(fa);
    
    cout << max(f[fa][0],f[fa][1]);
    
    return 0;
}

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

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

相关文章

数据分析 | 为什么Bagging算法的效果优于单个评估器

1. 回归问题如何降低方差 以随机森林为例&#xff0c;假设随机森林中含有n个弱评估器&#xff0c;由于子样本集的相似性以及使用的是同种模型&#xff0c;因此各模型有近似相等的方差和偏差&#xff0c;因此假设任意弱评估器上输出结果为,方差均为&#xff0c;则随机森林的输出…

PyTorch翻译官网教程-NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN

官网链接 NLP From Scratch: Classifying Names with a Character-Level RNN — PyTorch Tutorials 2.0.1cu117 documentation 使用CHARACTER-LEVEL RNN 对名字分类 我们将建立和训练一个基本的字符级递归神经网络(RNN)来分类单词。本教程以及另外两个“from scratch”的自然…

Selenium图片滑块验证码

因为种种原因没能实现愿景的目标&#xff0c;在这里记录一下中间结果&#xff0c;也算是一个收场吧。这篇文章主要是用selenium解决滑块验证码的个别案列。 思路&#xff1a; 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方&#…

openocd调试esp32(通过FT232H)

之前在学习ESP32&#xff0c;其中有一部分课程是学习openocd通过JTAG调试程序的&#xff0c;因为我用的是ESP32-wroom&#xff0c;usb端口没有集成对应的usb转jtag的ft232&#xff0c;查了ESP32相关的资料&#xff08;JTAG 调试 - ESP32 - — ESP-IDF 编程指南 latest 文档 (es…

【yolov系列:小白yolov7跑数据集建立环境】

首先在github上面获取别人的源码 这个是github的源码包&#xff0c;直接下载解压使用 打开解压后的文件夹应该可以看到这个页面。 进入文件夹的requirements.txt的页面 这篇文章是为了记录自己的环境配置过程&#xff0c;当作笔记使用来看&#xff0c;目前网上各种安装教程都…

微信小程序中键盘弹起输入框自动跳到键盘上方处理

效果展示 键盘未弹起时 键盘弹起后&#xff1a; 实现方式 话就不多说了 我直接贴代码了 原理就是用你点击的输入框的底部 距离顶部的位置 减去屏幕高度除以2&#xff0c;然后设成负值&#xff0c;再将这个值给到最外层相对定位的盒子的top属性&#xff0c;这样就不会出现顶…

linux文件I/O之 fcntl() 函数用法:设置文件的 flags、设置文件锁(记录锁)

头文件和函数声明 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); 函数功能 获取、设置已打开文件的属性 返回值 成功时返回根据 cmd 传递的命令类型的执行结&#xff0c;失败时返回 -1&#xff0c;并设置 errno 为相…

山西电力市场日前价格预测【2023-08-12】

日前价格预测 预测明日&#xff08;2023-08-12&#xff09;山西电力市场全天平均日前电价为330.52元/MWh。其中&#xff0c;最高日前电价为387.00元/MWh&#xff0c;预计出现在19: 45。最低日前电价为278.05元/MWh&#xff0c;预计出现在13: 00。 价差方向预测 1&#xff1a; 实…

【Bert101】最先进的 NLP 模型解释【02/4】

0 什么是伯特&#xff1f; BERT是来自【Bidirectional Encoder Representations from Transformers】变压器的双向编码器表示的缩写&#xff0c;是用于自然语言处理的机器学习&#xff08;ML&#xff09;模型。它由Google AI Language的研究人员于2018年开发&#xff0c;可作为…

最强自动化测试框架Playwright(9)- 下载文件

对于页面下载的每个附件&#xff0c;都会发出 page.on&#xff08;“download”&#xff09; 事件。 下载开始后&#xff0c;将发出下载事件。下载完成后&#xff0c;下载路径将变为可用 所有这些附件都下载到一个临时文件夹中。可以使用事件中的下载对象获取下载 URL、文件系…

BClinux8.6 制作openssh9.2p2 rpm升级包和升级实战

一、背景说明 BClinux8.6 安装的openssh 版本为9.3p1&#xff0c;经绿盟扫描&#xff0c;存在高危漏洞&#xff0c;需要升级到最新。 OpenSSH 命令注入漏洞(CVE-2020-15778) OpenSSH 安全漏洞(CVE-2023-38408) 目前官网只提供编译安装包&#xff0c;而BClinux8.6 为rpm方…

上市公司绿色发展专题:重污染行业企业名单与绿色创新数据

数据简介&#xff1a;上市公司&#xff0c;尤其是重污染行业上市公司实现绿色发展&#xff0c;广泛开展绿色创新&#xff0c;是我国高质量发展的必然要求&#xff0c;受到了来自学界与各级ZF的诸多关注。现有研究中对上市公司绿色发展问题的研究发现&#xff0c;重污染行业上市…

剑指offer14-I.剪绳子

昨天写的那道题是数组中除了一个元素外其余元素的乘积&#xff0c;这道题自然就想到了把一个数分成两个的和&#xff0c;然后积就是这两个数的积&#xff0c;而这两个数中的每个数又可以分成两个数&#xff0c;所以可以用动态规划的方法&#xff0c;dp[i] dp[j]*dp[i-j]。但是…

ChatGPT应用在律师行业需谨慎,南非有律师被它的幻觉误导了!

ChatGPT自去年以来大受欢迎&#xff0c;没想到它这么快会出现在法庭上。 最近&#xff0c;南非约翰内斯堡地区法院审理一个案件时&#xff0c;有律师因为使用ChatGPT生成的虚假参考资料而受到指责。[1] 根据《星期日泰晤士报》的报道&#xff0c;法院判决认为&#xff0c;该名…

pgsql checkpoint机制(1)

检查点触发时机 检查点间隔时间由checkpoint_timeout设置pg_xlog中wall段文件总大小超过参数max_WAL_size的值postgresql服务器在smart或fast模式下关闭手动checkpoint 为什么需要检查点&#xff1f; 定期保持修改过的数据块作为实例恢复时起始位置&#xff08;问题&#xf…

6.利用matlab完成 符号矩阵的秩和 符号方阵的逆矩阵和行列式 (matlab程序)

1.简述 利用M文件建立矩阵 对于比较大且比较复杂的矩阵&#xff0c;可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。 例2-2 利用M文件建立MYMAT矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器&#xff0c;并输入待建矩阵&#xff1a;(2) 把…

Python爬虫——requests_cookie登陆古诗文网

寻找登陆需要的参数 __VIEWSTATE:aiMG0UXAfCzak10C7436ZC/RXoZbM2lDlX1iU/4wjjdUNsW8QUs6W2/3M6XIKagQZrC7ooD8Upj8uCnpQMXjDAp6fS/NM2nGhnKO0KOSXfT3jGHhJAOBouMI3QnlpJCQKPXfVDJPYwh169MGLFC6trY __VIEWSTATEGENERATOR: C93BE1AE from: http://so.gushiwen.cn/user/collect.…

springboot异步任务

在Service类声明一个注解Async作为异步方法的标识 package com.qf.sping09test.service;import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service;Service public class AsyncService {//告诉spring这是一个异步的方法Asyncp…

Day 28 C++ (映射)map 容器 / multimap 容器 (多重映射)

文章目录 map (映射)定义注意优点 map构造和赋值构造赋值示例 map大小和交换函数原型示例 map插入和删除函数原型四种插入方式示例 map查找和统计函数原型示例 map容器排序 multimap 容器 (多重映射)定义特点和map的区别示例 map (映射) 定义 C中的map是一种关联容器&#xf…

Windows - UWP - 为UWP应用创建桌面快捷方式

Windows - UWP - 为UWP应用创建桌面快捷方式 前言 这是一个较为简单的方式&#xff0c;不需要过多的命令行。 How 首先Win R -> shell:AppsFolder -> 回车&#xff0c; 这将显示电脑上的已安装应用&#xff08;Win32 & UWP&#xff09;&#xff1a; 找到想要创建…