題意:
給定一顆以1號節點為根節點的有向樹,每個節點有乙個權值,問從1號節點出發k次,能到達的所有節點的和的最大值。思路:
貪心的把樹的鏈按照權值和從大到小剖分成若干條鏈(過程可以根據上交書上的熟練剖分模版做細小改動),然後根據每條鏈的權值排序取最大的k個就是答案。**:
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn =100000+5;
const
int maxm=maxn+maxn;
int v[maxm],info[maxn],prev[maxm],q[maxn],dep[maxn];
int belong[maxn],head[maxn];
long
long size[maxn];
bool vis[maxn];
int cnt=0,n,nedge=0;
int weight[maxn];
inline
void insert(int x,int y)
void split()}}
for(int i=n;i;i--)
}if(p==-1)
else
vis[x]=true;
}}bool cmp(int a,int b)
int ans[maxn];
long
long get_ans(int k)
return ret;
}int main()
for(int i=1;iscanf("%d%d",&a,&b);
insert(a,b);
}split();
cout
0;}
HDU 5242 Game 樹鏈剖分
原題鏈結 給一棵樹,每個節點都有乙個權值,每次操作從根節點開始到葉子節點,問k次操作,最多可以取多少。因為答案是對樹鏈求和統計,所以可以考慮樹剖,也是考慮去剖重鏈 根據權值 最後只要沿著重兒子一路統計出所有的鏈的值,在從大到小排個序取k個就可以了。想到樹剖之後就是相當板子的題了。include in...
HDU 5242 思路題目
本題目給定一顆以1為根的樹,每個節點都有乙個權,記,從根走到葉子節點的一條線為一條路,問從根走到葉子k次,最多可以得到得到的權和。被走過的點的權不再被疊加。1 n,k 100000 思路 首先這題目,不適合樹形揹包,資料範圍太大,樹形揹包大概是被背數量上限的平方的複雜度即k 2。可以用貪心的思想來做...
2023年小學甲組 game
第五題 遊戲 game 問題描述 今天是星期天,小楠楠來找你玩 石頭 剪刀 布遊戲 你正在學習資訊學,所以想了一種需要程式設計來玩的 石頭 剪刀 布遊戲 首先,用數字 1,2,3 分別表示出石頭 剪刀 布。其次,你確定自己前 n 次 石頭 剪刀 布 的出拳方法,下面 n 次再次同樣出拳,周而復始 也...