舞會無領導:一種樹形動態規劃的視角

沒有上司的舞會

Ural 大學有 𝑁 名職員,編號為1~𝑁。

他們的關系就像一棵以校長為根的樹,父節點就是子節點的直接上司。

每個職員有一個快樂指數,用整數 𝐻𝑖 給出,其中1≤𝑖≤𝑁。

現在要召開一場周年慶宴會,不過,沒有職員愿意和直接上司一起參會。

在滿足這個條件的前提下,主辦方希望邀請一部分職員參會,使得所有參會職員的快樂指數總和最大,求這個最大值。

輸入格式

第一行一個整數 𝑁。

接下來 𝑁 行,第 𝑖 行表示 𝑖 號職員的快樂指數 𝐻𝑖。

接下來𝑁?1 行,每行輸入一對整數 𝐿,𝐾,表示 𝐾 是 𝐿 的直接上司。(注意一下,后一個數是前一個數的父節點,不要搞反)。

輸出格式

輸出最大的快樂指數。

數據范圍

1≤𝑁≤6000,
?128≤𝐻𝑖≤127

輸入樣例:
7
1
1
1
1
1
1
1
1 3
2 3
6 4
7 4
4 5
3 5
輸出樣例:
5

題意簡化

這道題題目看上去花里胡哨的,但其實挺好理解的
前N行表示第i號職工的快樂指數
后面的N?1行輸入兩個整數L,K,表示 K是 L 的直接上司,如圖。

要求使得所有參會職員的快樂指數總和最大。

在這兒講解一下樣例
根據這個樣例,我們可以畫出一張圖(如果還不知道樣例是什么意思的看上面),如下:

那輸出樣例的 5 是怎么來的呢?
請看:

根據畫圖得出,⑤ 是根節點(校長)。
我們知道樣例中每個節點的快樂值都為 1,所以決定最大快樂值的是節點的數量

在這個樣例里,我們必須選校長,為什么呢?
比如我們選了 ③,那他的下屬全部KO,或者選了 ④,也是一樣
那我們的最大快樂值就變成了 3,錯誤

只有我們選了 ⑤,那剩下的 ①、 ②、 ⑥、 ⑦才能茍活被選中

我們現在選了 ⑤,那我們就可以有五個人參加,且快樂值是最大的,為 5,選中的清晰,如圖:

發現什么了嗎?

  • 當不選 i 節點時,影響最大高興值的節點為i的子節點或其他節點

  • 當選 i 節點時,影響最大高興值的節點只為i的子節點

由此我們可以得出狀態轉移方程:

  • 當 f[i][1]時表示選 i號節點。

那么很明顯 i號節點的快樂值需要算上

然后我們知道,如果選了這個點,它的所有字節點都是不能選的,所以我們應該給它加上 f[j][0]

  • 當 f[i][0]時表示不選 i

這時我們不需要加上 i號點的快樂值
如果不選這個點,它的子節點可以選也可以不選,所以我們應該給它加上 maxf[j][0],f[j][1]

算法1

(樹形DP) O(n)
看圖:

時間復雜度

C++ 代碼

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 6010;
int n;
int happy[N]; //每個職工的高興度
int f[N][2]; //上面有解釋哦~
int e[N],ne[N],h[N],idx; //鏈表,用來模擬建一個樹
bool has_father[N]; //判斷當前節點是否有父節點
void add(int a,int b){ //把a插入樹中e[idx] = b,ne[idx] = h[a],h[a] = idx ++;
}
void dfs(int u){ //開始求解題目f[u][1] = happy[u]; //如果選當前節點u,就可以把f[u,1]先懟上他的高興度for(int i = h[u];~i;i = ne[i]){ //遍歷樹int j = e[i];dfs(j); //回溯//狀態轉移部分,上面有詳細講解~f[u][0] += max(f[j][1],f[j][0]);f[u][1] += f[j][0];}
}
int main(){scanf("%d",&n);for(int i = 1;i <= n;i ++) scanf("%d",&happy[i]); //輸入每個人的高興度memset(h,-1,sizeof h); //把h都賦值為-1for(int i = 1;i < n;i ++){int a,b; //對應題目中的L,K,表示b是a的上司scanf("%d%d",&a,&b); //輸入~has_father[a] = true; //說明a他有上司add(b,a); //把a加入到b的后面}int root = 1; //用來找根節點while(has_father[root]) root ++; //找根節點dfs(root); //從根節點開始搜索printf("%d\n",max(f[root][0],f[root][1])); //輸出不選根節點與選根節點的最大值return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38836.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38836.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38836.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

校園卡手機卡怎么注銷?

校園手機卡的注銷流程可以根據不同的運營商和具體情況有所不同&#xff0c;但一般來說&#xff0c;以下是注銷校園手機卡的幾種常見方式&#xff0c;我將以分點的方式詳細解釋&#xff1a; 一、線上注銷&#xff08;通過手機APP或官方網站&#xff09; 下載并打開對應運營商的…

C++ 指針介紹

指針是C編程語言中的一個強大且重要的特性。它允許程序員直接操作內存地址&#xff0c;從而提供了對低級別內存的訪問和控制。雖然指針在使用時可能比較復雜且容易出錯&#xff0c;但它們在提高程序效率和靈活性方面有著不可替代的作用。本文將介紹C指針的基本概念、用法及其應…

Docker 中 MySQL 遷移策略(單節點)

目錄 一、 簡介二、操作流程2.1 進入mysql容器2.2 導出 MySQL 數據2.3. 將導出的文件復制到宿主機2.4 創建 Docker Compose 配置2.5 啟動新的 Docker 容器2.6 導入數據到新的容器2.7 驗證數據2.8 刪除舊的容器&#xff08;刪除操作需慎重&#xff09; 三、推薦配置四、寫在后面…

當年很多跑到美加澳寫代碼的人現在又移回香港?什么原因?

當年很多跑到美加澳寫代碼的人現在又移回香港&#xff1f;什么原因&#xff1f; 近年來&#xff0c;確實有部分曾經移民到美國、加拿大、澳大利亞等地的香港居民選擇移回香港。這一現象與多種因素相關&#xff0c;主要可以歸結為以下幾點&#xff1a; 疫情后的環境變化&#…

【STM32】溫濕度采集與OLED顯示

一、任務要求 1. 學習I2C總線通信協議&#xff0c;使用STM32F103完成基于I2C協議的AHT20溫濕度傳感器的數據采集&#xff0c;并將采集的溫度-濕度值通過串口輸出。 任務要求&#xff1a; 1&#xff09;解釋什么是“軟件I2C”和“硬件I2C”&#xff1f;&#xff08;閱讀野火配…

2025第13屆常州國際工業裝備博覽會招商全面啟動

常州智造 裝備中國|2025第13屆常州國際工業裝備博覽會招商全面啟動 2025第13屆常州國際工業裝備博覽會將于2025年4月11-13日在常州西太湖國際博覽中心盛大舉行&#xff01;目前&#xff0c;各項籌備工作正穩步推進。 60000平米的超大規模、800多家國內外工業裝備制造名企將云集…

C++中的RAII(資源獲取即初始化)原則

C中的RAII&#xff08;Resource Acquisition Is Initialization&#xff0c;資源獲取即初始化&#xff09;原則是一種管理資源、避免資源泄漏的慣用法。RAII是C之父Bjarne Stroustrup提出的設計理念&#xff0c;其核心思想是將資源的獲取&#xff08;如動態內存分配、文件句柄、…

最細最有條理解析:事件循環(消息循環)是什么?進程與線程的定義、關系與差異

目錄 事件循環&#xff1a;引入 一、瀏覽器的進程模型 1.1、什么是進程&#xff08;Process&#xff09; 1.2、什么是線程&#xff08;Thread&#xff09; 1.3、進程與線程之間的關系聯系與區別 二、瀏覽器有哪些進程和線程 2.1、瀏覽器的主要進程 ①瀏覽器進程 ②網絡…

ctfshow sqli-libs web561--web568

web561 ?id-1 or 1--?id-1 union select 1,2,3--?id-1 union select 1,(select group_concat(column_name) from information_schema.columns where table_nameflags),3-- Your Username is : id,flag4s?id-1 union select 1,(select group_concat(flag4s) from ctfshow.f…

擴展學習|風險評估和風險管理:回顧其基礎上的最新進展

文獻來源&#xff1a;[1]Aven, T. (2016). Risk assessment and risk management: Review of recent advances on their foundation. European journal of operational research, 253(1), 1-13. 文章簡介&#xff1a;大約30-40年前&#xff0c;風險評估和管理被確立為一個科學領…

數據結構 - C/C++ - 鏈表

目錄 結構特性 內存布局 結構樣式 結構拓展 單鏈表 結構定義 節點關聯 插入節點 刪除節點 常見操作 雙鏈表 環鏈表 結構容器 結構設計 結構特性 線性結構的存儲方式 順序存儲 - 數組 鏈式存儲 - 鏈表 線性結構的鏈式存儲是通過任意的存儲單元來存儲線性…

技術分享:分布式數據庫DNS服務器的架構思路

DNS是企業數字化轉型的基石。伴隨微服務或單元化部署的推廣&#xff0c;許多用戶也開始采用分布式數據庫將原來的單體數據庫集群服務架構拆分為大量分布式子服務集群&#xff0c;對應不同的微服務或服務單元。本文將從分布式數據庫DNS服務器的架構需求、架構分析兩方面入手&…

1_插入排序_循環不變式

01_插入排序 #include<stdio.h>void insert_sort(int arr[], int n); void printArray(int arr[], size);int main() {int arr[] {1, 2, 3, 22, 5, 9};int n sizeof(arr) / sizeof(arr[0]);printf("打印原始數組:\n");prinfArray(arr, n);insert_sort(arr, …

湖北大學2024年成人高考函授報名專升本市場營銷專業介紹

在璀璨的學術殿堂中&#xff0c;湖北大學如同一顆璀璨的明珠&#xff0c;熠熠生輝。為了滿足廣大社會人士對于繼續深造、提升自我、實現職業夢想的渴望&#xff0c;湖北大學特別開設了成人高等繼續教育項目&#xff0c;為廣大有志之士敞開了一扇通往知識殿堂的大門。 而今&…

【FFmpeg】av_write_frame函數

目錄 1.av_write_frame1.1 寫入pkt&#xff08;write_packets_common&#xff09;1.1.1 檢查pkt的信息&#xff08;check_packet&#xff09;1.1.2 準備輸入的pkt&#xff08;prepare_input_packet&#xff09;1.1.3 檢查碼流&#xff08;check_bitstream&#xff09;1.1.4 寫入…

【創建者模式-建造者模式】

概要 將一個復雜對象的構建與表示分離&#xff0c;使得同樣的構建過程可以創建不同的表示。 建造者模式包含以下角色 抽象建造者類&#xff08;Builder&#xff09;&#xff1a;這個接口規定要實現復雜對象的那些部分的創建&#xff0c;并不涉及具體的部件對象的創建。具體建…

什么是ISR?

ISR&#xff08;Interrupt Service Routine&#xff0c;中斷服務程序&#xff09;是一個用于處理硬件中斷的特定程序。中斷是硬件或軟件引起的事件&#xff0c;會暫時打斷當前正在運行的任務&#xff0c;以便緊急處理某個事件。ISR的目的是快速響應中斷信號&#xff0c;執行所需…

在WSL Ubuntu中啟用root用戶的SSH服務

在 Ubuntu 中&#xff0c;默認情況下 root 用戶是禁用 SSH 登錄的&#xff0c;這是為了增加系統安全性。 一、修改配置 找到 PermitRootLogin 行&#xff1a;在文件中找到 PermitRootLogin 配置項。默認情況下&#xff0c;它通常被設置為 PermitRootLogin prohibit-password 或…

一篇文章學會【node.js安裝以及Vue-Cli腳手架搭建】

一.為什么搭建Vue-Cli (1).傳統的前端項目結構&#xff1a; 一個項目中有許多html文件&#xff0c;每一個html文件都是相互獨立的&#xff0c; 如果需要在頁面中導入一些外部依賴的組件&#xff0c;就需要在每一個html文件中都需要導入&#xff0c;非常麻煩 (2).現在的前端…

A股低開高走,近3000點,行情要啟動了嗎?

A股低開高走&#xff0c;近3000點&#xff0c;行情要啟動了嗎&#xff1f; 今天的A股&#xff0c;讓人瞪目結舌了&#xff0c;你們知道是為什么嗎&#xff1f;盤面上出現2個重要信號&#xff0c;一起來看看&#xff1a; 1、今天兩市低開高走&#xff0c;銀行板塊護盤指數&…