HNOI 2014 公尺特運輸

2022-05-07 19:09:10 字數 764 閱讀 1370

戳我

誰出的題目啊?這麼長的題面,看完就滾粗了.強烈譴責

給一棵樹,每個點有乙個權值,要求修改一些權值,使:

乙個點的權值必須是其所有兒子的權值之和

乙個點的兒子權值必須相同

求最少的被修改的數目

隨便畫一畫圖就可以找到一些顯著的規律,只要確定了乙個點的權值就可以知道整顆樹的值了.

這裡就不詳細的給出圖進行解釋了,自己畫一畫圖就可以知道了.

於是我們可以令\(val[x]\)表示\(x\)這個點不變的話,根節點的值.

但是將子節點的個數成起來會爆\(long\ long\),所以需要運用一點小技巧:\(log\)

運用公式:\(log(a*b)=log(a)+log(b)\)

答案就是\(n-val\)陣列中相同個數最多的.

#includeusing namespace std;

const double eps=1e-6;

int read()

struct node a[500010<<1];

double val[500010];

int v[500010],head[500010],s[500010],cnt;

void add(int x,int y)

void dfs(int x,int fa,double ans)

}main()

printf("%d",n-maxx);

}

HNOI2014 公尺特運輸

顯然知道乙個節點就可以推出整棵樹 然而直接乘會爆longlong 所以考慮取log 最後排序算眾數即可 include include include include include include define il inline define rg register define fill a,...

HNOI2014 公尺特運輸

原題鏈結 題目麻煩的一批。下面直接給簡化版 給一棵樹,每個點有乙個權值,要求修改一些點的權值,使得 同乙個父親的兒子權值必須相同 父親的取值必須是所有兒子權值之和 問最小要修改幾個點。很顯然這是乙個樹形dp。由於這個要求,樹上只要有乙個點確定,全樹的權值就都確定了。那麼我們只要計算將路徑上權值的累乘...

HNOI2014 公尺特運輸

公尺特是d星球上一種非常神秘的物質,蘊含著巨大的能量。在以公尺特為主要能源的d星上,這種公尺特能源的運輸和儲存一直是乙個大問題。d星上有n個城市,我們將其順序編號為1到n,1號城市為首都。這n個城市由n 1條單向高速通道連線起來,構成一棵以1號城市 首部 為根的樹,高速通道的方向由樹中的兒子指向父親...