2B 公尺特運輸

2022-02-17 20:37:56 字數 2340 閱讀 2816

公尺特是d星球上一種非常神秘的物質,蘊含著巨大的能量。在以公尺特為主要能源的d星上,這種公尺特能源的運輸和儲

存一直是乙個大問題。d星上有n個城市,我們將其順序編號為1到n,1號城市為首都。這n個城市由n-1條單向高速

通道連線起來,構成一棵以1號城市(首部)為根的樹,高速通道的方向由樹中的兒子指向父親。樹按深度分層:

根結點深度為0,屬於第1層;根結點的子節點深度為1,屬於第2層;依此類推,深度為i的結點屬於第i+l層。建好

高速通道之後,d星人開始考慮如何具體地儲存和傳輸公尺特資源。由於發展程度不同,每個城市儲存公尺特的能力不

盡相同,其中第i個城市建有乙個容量為a[i]的公尺特儲存器。這個公尺特儲存器除了具有儲存的功能,還具有自動收

集公尺特的能力。如果到了晚上六點,有某個儲存器處於未滿的狀態,它就會自動收集大氣中蘊含的公尺特能源,在早

上六點之前就能收集滿;但是,只有在儲存器完全空的狀態下啟動自動收集程式才是安全的,未滿而又非空時啟動

可能有安全隱患。早上六點到七點間,根節點城市(1號城市)會將其儲存器裡的公尺特消耗殆盡。根節點不會自動

蒐集公尺特,它只接受子節點傳輸來的公尺特。早上七點,城市之間啟動公尺特傳輸過程,傳輸過程逐層遞進:先是第2

層節點城市向第1層(根節點城市,即1號城市)傳輸,直到第1層的儲存器滿或第2層的儲存器全為空;然後是第3

層向第2層傳輸,直到對於第2層的每個節點,其儲存器滿或其予節點(位於第3層)的儲存器全為空;依此類推,

直到最後一層傳輸完成。傳輸過程一定會在晚上六點前完成。

由於技術原因,運輸方案需要滿足以下條件:

不能讓某個儲存器到了晚上六點傳輸結束時還處於非空但又未滿的狀態,這個時候儲存器仍然會啟動自動收集

公尺特的程式,而給已經儲存有公尺特的儲存器啟動收集程式可能導致危險,也就是說要讓儲存器到了晚上六點時要麼

空要麼滿;

關於首都——即1號城市的特殊情況, 每天早上六點到七點間1號城市中的公尺特儲存器裡的公尺特會自動被消耗

殆盡,即運輸方案不需要考慮首都的公尺特怎麼運走;

除了1號城市,每個節點必須在其子節點城市向它運輸公尺特之前將這座城市的公尺特儲存器中原本存有的公尺特全部

運出去給父節點,不允許儲存器中殘存的公尺特與外來的公尺特發生混合;

運向某乙個城市的若干個**的公尺特數量必須完全相同,不然,這些**不同的公尺特按不同比例混合之後可能

發生危險。

現在d星人已經建立好高速通道,每個城市也有了一定儲存容量的公尺特儲存器。為了滿足上面的限制條件,可能需

要重建一些城市中的公尺特儲存器。你可以,也只能,將某一座城市(包括首都)中原來存在的公尺特儲存器摧毀,再

新建一座任意容量的新的公尺特儲存器,其容量可以是小數(在輸入資料中,儲存器原始容量是正整數,但重建後可

以是小數),不能是負數或零,使得需要被重建的公尺特儲存器的數目盡量少。

第一行是乙個正整數\(n\),表示城市的數目。

接下來\(n\)行,每行乙個正整數,其中的第\(i\)行表示第\(i\)個城市原來存在的公尺特儲存器的容量。

再接下來是\(n-i\)行,每行兩個正整數a,b表示城市b到城市a有一條高速通道\((a≠b)\)。

\(n<500000\),\(a[ j]<10^8\)

輸出檔案僅包含一行,乙個整數,表示最少的被重建(即修改儲存器容量)的公尺特儲存器的數目。

554

3211 2

1 32 4

2 5

3
乙個最優解是將\(a[ 1]\)改成8,\(a[ 3]\)改成4,\(a[ 5]\)改成2。

這樣,2和3運給1的量相等,4和5運給2的量相等,且每天晚上六點的時候,1,2滿,3,4,5空,滿足所有限制條件。

簡單來說,限制條件是這樣:

一棵樹的每個兄弟之間量相等

父節點的量等於每個子節點量的和

所以,我們知道任意乙個節點的量,就可以推得整個樹的量

比如知道子節點的量,父節點的量就是子節點的量乘兒子數

知道父節點的量,子節點的量就是父節點的量除以兒子數

\(f[i]\)是保留i節點是根節點的量

排序後比較就能找到最多不需要改的點數

#include #include #include using namespace std;

const int n = 5e5+5;

struct side e[n];

int head[n], tot;

void add(int x, int y)

int n, d[n], cnt = 1, ans = 1;

double a[n], f[n];

void dfs(int x, double s)

}int main()

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號城市 首部 為根的樹,高速通道的方向由樹中的兒子指向父親...