顯然知道乙個節點就可以推出整棵樹
然而直接乘會爆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 的權值 於是我們可以用顯然法...