(noip 模擬 染色)《樹形DP

2021-08-05 23:41:46 字數 966 閱讀 6913

染色

【題目描述】

有一棵點數為 n 的樹,樹邊有邊權。將 m 個點染成黑色,並將其他的點染

成白色。會獲得黑點兩兩之間的距離和加上白點兩兩之間的距離和的收益。問

收益最大值是多少。

【輸入格式】

第一行兩個整數 n、m。接下來 n-1 行,每行三個整數 a、b、c,表示有一

條樹邊連線 a、b,長度為 c。

【輸出格式】

一行乙個正整數,表示收益的最大值。

【樣例輸入】

3 1

1 2 1

1 3 2

【樣例輸出】

3 【資料規模與約定】

30%的資料,n≤15

60%的資料,n≤100

另 20%的資料,這棵樹是一條鏈

100%的資料,0≤m≤n≤2000,1≤c≤1,000,000

有點像揹包

// by spli

#include

#include

#include

#include

#define ll long long

using

namespace

std;

const

int m=2010;

int n,m;

struct nodee[m<<1];int head[m],cnt,siz[m];

int fa[m];

ll f[m][m];

void dfs(int u)}}

}}void add(int f,int t,int v);

head[f]=cnt;

siz[f]++;

}int main()

dfs(1);

cout

<1][m];

return

0;}

NOIP 模擬題 T2 寶藏(樹形dp)

題解 樹形dp 其實這道題說起來很簡單,用四個陣列 d1 d0 u0 u1分別表示從當前點向下更新,不返回 從當前點向下更新再回到當前點 從當前點向上更新回到當前點 從當前點向上更新不返回。用兩遍dfs求出這四個陣列 實現起來細節會比較多,耐心處理 include include include d...

P3914 染色計數 樹形dp

n nn個點每個點有些可以染的顏色,要求相鄰顏色不相同,方案總數。樹形d pdp dp,定義fx,if fx,i 表示點x xx的染顏色i ii的方案數。然後定義zx i 1 mfxi z x sum mf zx i 1m fxi 然後顯然動態轉移方程fx,i zy fy,i x y f z y f...

HAOI2015 樹上染色(樹形dp)

有一棵點數為 n 的樹,樹邊有邊權。給你乙個在 0 n 之內的正整數 k 你要在這棵樹中選擇 k個點,將其染成黑色,並將其他 的n k個點染成白色 將所有點染色後,你會獲得黑點兩兩之間的距離加上白點兩兩之間的距離的和的受益。問受益最大值是多少。輸入格式 第一行包含兩個整數 n,k 接下來 n 1 行...