Nowcoder13249 黑白樹(樹形DP)

2022-09-02 09:24:12 字數 789 閱讀 7443

一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k[i]。每個點都有乙個顏色,初始的時候所有點都是白色的。

你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上(包括節點i與根)所有與節點i距離小於k[i]的點都會變黑,已經是黑的點保持為黑。問最少使用幾次操作能把整棵樹變黑。

//先記一遍每個子樹的最大向上高度

//然後對每個葉子節點染色

//遇到沒染色的節點,去子樹里找最大的高度,更新高度

#includeusing namespace std;

const int maxn=1e5+100;

int n,k[maxn];

vectorg[maxn];

int dep[maxn];

int ans;

int h[maxn];//h_x表示x子樹內可以往上走的最高高度

int f[maxn];//f_x表示x子樹內當前往上走的最高高度

void dfs (int x,int pre)

}void dfs1 (int x,int pre)

if (min<=dep[x])

else

}int main ()

for (int i=1;i<=n;i++) scanf("%d",k+i),f[i]=1e9;

dfs(1,0);

dfs1(1,0);

printf("%d\n",ans);

}

Nowcoder 黑白樹 樹形dp

一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i 的點都會...

NC13249 黑白樹 樹上貪心

一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i 的點都會...

黑白樹 樹形 貪心

題目描述 一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要通過一系列操作使得最終每個點變成黑色。每次操作需要選擇乙個節點i,i必須是白色的,然後i到根的鏈上 包括節點i與根 所有與節點i距離小於k i...