派對的最大快樂值

2021-10-19 11:06:52 字數 1204 閱讀 9137

題目描述

整個公司的人員結構可以看作是一棵標準的多叉樹。樹的頭節點是公司唯一的老闆,除老闆外,每個員工都有唯一的直接上級,葉節點是沒有任何下屬的基層員工,除基層員工外,每個員工都有乙個或多個直接下級,另外每個員工都有乙個快樂值。

這個公司現在要辦 party,你可以決定哪些員工來,哪些員工不來。但是要遵循如下的原則:

1.如果某個員工來了,那麼這個員工的所有直接下級都不能來。

2.派對的整體快樂值是所有到場員工快樂值的累加。

3.你的目標是讓派對的整體快樂值盡量大。

給定一棵多叉樹,請輸出派對的最大快樂值。

輸入描述:

第一行兩個整數 n 和 root,n 表示公司的總人數,root 表示公司的老闆。

接下來 n - 1 行每行兩個整數 u_i 和 v_i 表示 u_i 是 v_i 的直接上級。

輸出描述:

輸出乙個整數表示最大快樂值。

示例1輸入

3 15 1 1

1 21 3輸出5

#include

using

namespace std;

struct employee };

struct info };

info*

process

(employee* x)

int yes = x-

int no =0;

for(employee* next : x-

>subordinates)

return

newinfo

(yes, no);}

int(employee* boss)

info *all =

process

(boss)

;return std::

max(all-

>yes, all-

>no);}

intmain()

);for(

int i =

0; i < n;

++i)

int boss, sub;

for(

int i =

0; i < n -

1; i++

)int res =

(all_people[root]);

cout << res;

return0;

}

滑動視窗的最大值 佇列的最大值

請定義乙個佇列並實現函式max得到佇列裡的最大值,要求函式max push back和 pop front的時間複雜度都是o 1 在佇列中維護乙個儲存最大值的佇列,當pop和push操作的同時也對最大值佇列進行維護。當彈出的時佇列中的最大值時,也彈出最大值佇列的頭,當壓入新值時,對最大值佇列從後向前...

最大值的選取

如果問題中各資料的範圍明確,那麼無窮大的設定不是問題,在不明確的情況下,很多程式設計師都取0x7fffffff作為無窮大,因為這是32 bit int的最大值。如果這個無窮大只用於一般的比較 比如求最小值時min變數的初值 那麼0x7fffffff確實是乙個完美的選擇,但是在更多的情況下,0x7ff...

rand 的最大值

rand 函式是乙個在開發的時候比較常用的函式,但這個函式返回隨機數的取值範圍並非多大的值都可以,在工作修乙個 活動bug的時候曾經遇到這樣一種情況,當總權重大於rand的最大值2 16 32767的時候,rand返回的值將不會大於32767,也就是說後面的獎勵將永遠不會被抽到。int cdecl ...