HDU 5242 GAME 2015上海邀請賽G題

2021-07-02 21:33:46 字數 1030 閱讀 7153

題意:

給定一顆以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 次再次同樣出拳,周而復始 也...