Acwing 0x50 動態規劃 沒有上司的舞會

2021-09-25 21:17:13 字數 1541 閱讀 6420

題意

ural大學有n名職員,編號為

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

每個職員有乙個快樂指數,用整數

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

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

輸入格式

第一行乙個整數

接下來接下來

最後一行輸入0,0。

輸出格式

輸出最大的快樂指數。

資料範圍

題解

f[x][0]表示從以x為根的子樹邀請一部分職員參會,並且x不參加舞會時,快樂指數總和的最大值。此時,x的所有子節點(直接下屬)可以參會,也可以不參會。

f[x][1]表示從以x為根的子樹邀請一部分職員參會,並且x參加舞會時,快樂指數總和的最大值。此時,x的所有子節點(直接下屬)都不能參會。

我們先找到沒有上司的節點

簡單附**:

#include #define inf 0x3f3f3f3f

#define pair pair#define int long long

#define fir first

#define sec second

namespace fastio

inline char nc()

} return *p1++;

} inline bool blank(char ch)

templateinline bool read(t &x)

inline bool read(double &x)

if(sign)x=-x;

return true;

} inline bool read(char *s)

inline bool read(char &c)

return true;

} templatebool read(t& h,u&... t)

#undef out_size

#undef buf_size

};using namespace fastio;using namespace std;

const int n=1e6+5;

const int mod=1e9+7;

int h[n];

bool v[n];

vectorson[n];

int f[n][2];

void dp(int x)

}signed main()

int a,b;read(a,b);

int root;

for(int i=1;i<=n;i++)

} dp(root);

printf("%lld\n",max(f[root][0],f[root][1]));

return 0;

}

選課 0x50 動態規劃 例題

學校實行學分制。每門的必修課都有固定的學分,同時還必須獲得相應的選修課程學分。學校開設了 n n 300 門的選修課程,每個學生可選課程的數量 m 是給定的。學生選修了這 m 門課並考核通過就能獲得相應的學分。在選修課程中,有些課程可以直接選修,有些課程需要一定的基礎知識,必須在選了其他的一些課程的...

0x50 動態規劃 傳紙條 線性DP

給定乙個 n m n mn m 的矩陣 a aa,每個格仔中有乙個整數。現在需要找到兩條從左上角 1,1 1,1 1,1 到右下角 n,m n,m n,m 的路徑,路徑上的每一步只能向右或向下走。路徑經過的格仔中的數會被取走。兩條路徑不能經過同乙個格仔。求取得的數之和最大是多少。n,m 50 n,m...

0x50 動態規劃(練習)20 乾草堆(題解)

題目鏈結 題意 奶牛們討厭黑暗。為了調整牛棚頂的電燈的亮度,bessie必須建一座乾草堆使得她能夠爬上去夠到燈泡。一共有n大包的乾草 從1到n編號 依靠傳送帶連續的傳輸進牛棚來。第i包乾草有乙個寬度wi。所有的幹草包的厚度和高度都為1。bessie必須利用所有n包乾草來建立起乾草堆。她可以想放多少包...