HNOI2014 公尺特運輸

2021-08-13 10:27:10 字數 857 閱讀 3633

顯然知道乙個節點就可以推出整棵樹

然而直接乘會爆longlong

所以考慮取log

最後排序算眾數即可

# include 

# include

# include

# include

# include

# include

# define il inline

# define rg register

# define fill(a, b) memset(a, b, sizeof(a))

using

namespace

std;

typedef

long

long ll;

il ll read()

const

int maxn(500010);

const

double eps(1e-8);

int n, cnt, ft[maxn], a[maxn], son[maxn], ans;

double s[maxn];

struct edge edge[maxn << 1];

/* s[i]表示i不變,根的a取對數後的值

對s排序,取最多的眾數個數num

ans = n - num

*/il void add(rg int u, rg int v); ft[u] = cnt++; son[u]++;

}il void dfs(rg int u)

s[u] += log(a[u]);

}int main(rg int argc, rg char* argv)

HNOI2014 公尺特運輸

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

HNOI2014 公尺特運輸

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

HNOI2014 公尺特運輸

首先我們需要看懂題目 然後我們需要發現乙個結論 只要有乙個節點的權值確定,那麼整棵樹的權值就確定了 然後我們根據這張,可以設 f i a i cdot prod f mathrm f 其中 f 是 i 的祖先,mathrm f 表示 f 的子節點的個數,a i 表示 i 的權值 於是我們可以用顯然法...