传送门
长链剖分好题。
题意:给一棵带点权的树,可以从根节点到任一叶节点走 k k k次,走过的点只能计算一次,问 k k k次走过的点点权值和最大值。
思路:
考虑将整棵树带权长链剖分,这样链与链之间是不会重复选择的。
然后每条链都对应一种方案,我们贪心选择前 k k k大即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans