解題報告 POJ2054 給樹染色

2022-05-19 19:38:19 字數 707 閱讀 6001

貪心

我們很容易想到從第一層開始,每次染權值最大的乙個節點,但是我們可以構造出乙個數,讓乙個權值很小的點下面有權值很大的節點,所以我們考慮的貪心思路是樹中除了根節點外的權值最大的節點,它的父節點染色之後一定會被馬上染色,所以我們可以將權值最大的點和它的父節點進行合併,合併得到的新點的權值是這兩個點之和的平均值,這樣就一直合併,直至合併到乙個點的時候,我們就按照這個點合併的順序染色就是正確的答案了。

ac**

#include #include using namespace std;

long long r,n;

long long i,j,now,ans,a,b,father;

struct node

num[1010];

long long find()

} return ans;

}int main()

for(int i=1;i<=n-1;i++)

for(int i=1;i<=n-1;i++)

num[father].c+=num[now].c;

num[father].t+=num[now].t;

num[father].w=(double)(num[father].c)/num[father].t;

} cout

題解 poj2054 複雜的貪心

題目鏈結 大佬部落格的講解非常詳細,學習了 詳細思路見上方部落格或者李煜東 演算法競賽高階指南 include include include using namespace std define rep i,a,b for int i a i b i define for i,a,b for in...

POJ 2054 有難度的貪心

poj 2054 題意 給你一棵樹 然後給你根節點 其他節點染色的條件是父節點一定要被染色 我們知道如果父節點不需要被染色 那麼很簡單 貪心就好了 但是如果父親節點需要染色 我們利用前面的性質 大點值一定是跟在父節點後面的 所以我們考慮 x y是一起的 那麼 x y z 和z x y 分別是 x 2...

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...