BZOJ3252 攻略(長鏈剖分,貪心)

2022-03-20 04:57:45 字數 708 閱讀 7756

bzoj

給定一棵樹,每個點有點權,選定\(k\)個葉子,滿足根到\(k\)個葉子的所有路徑所覆蓋的點權和最大。

乙個假裝是對的貪心:

每次選擇最大的路徑,然後將路徑上所有點的權值清零。

那麼我們可以用長鏈剖分來實現這個貪心。

鏈長改為最大的路徑權值和,這樣子把每條重鏈的權值丟進乙個堆裡面取\(k\)次即可。

正確性自己\(yy\)一下,發現是對的

#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define max 200200

inline int read()

priority_queueq;

struct linee[max<<1];

int h[max],cnt=1;

inline void add(int u,int v);h[u]=cnt++;}

int a[max],n,k,hson[max];

ll ms[max],ans;

void dfs1(int u)

ms[u]+=a[u]+ms[hson[u]];

}void dfs2(int u,int tp)

int main()

BZOJ 3252 攻略(長鏈剖分)

題目簡述 樹版 k取方格數 眾所周知,桂木桂馬是攻略之神,開啟攻略之神模式後,他可以同時攻略k部遊戲。今天他得到了一款新遊戲 xx半島 這款遊戲有n個場景 scene 某些場景可以通過不同的選擇支到達其他場景。所有場景和選擇支構成樹狀結構 開始遊戲時在根節點 共通線 葉子節點為結局。每個場景有乙個價...

bzoj3252 攻略(長鏈剖分 貪心)

傳送門 長鏈剖分好題。題意 給一棵帶點權的樹,可以從根節點到任一葉節點走k kk次,走過的點只能計算一次,問k kk次走過的點點權值和最大值。思路 考慮將整棵樹帶權長鏈剖分,這樣鏈與鏈之間是不會重複選擇的。然後每條鏈都對應一種方案,我們貪心選擇前k kk大即可。include define ri r...

bzoj 3252 攻略 長鏈剖分 貪心

time limit 10 sec memory limit 128 mb 題目簡述 樹版 k取方格數 眾所周知,桂木桂馬是攻略之神,開啟攻略之神模式後,他可以同時攻略k部遊戲。今天他得到了一款新遊戲 xx半島 這款遊戲有n個場景 scene 某些場景可以通過不同的選擇支到達其他場景。所有場景和選擇...