這是一些編程比賽的問題(我不清楚它屬於哪個編程比賽,我在一年前見過)。現在的問題是:以最低成本找到建築物的常見高度
有N個建築,每個都具有其自身的高度(不一定是唯一的)
{h1,h2,h3,...,hn}
我們必須同樣高度的所有建築物說小時。
允許的操作是:
- 我們可以添加一些高度建築物。
- 我們可以從建築物中移除一些高度。
每個建築物移除/增加一個單位高度都有相關成本。說c(i)是向建築物移除/增加單位高度的成本。相應的成本如下:
{c1,c2,c3,...,cn}
假設我們有足夠的高度(單位)可用,我們必須找到它,使同一高度的所有建築物所需的最小成本。
輸入: 第一行將指定N個建築物的數量。 (1 < = N < = 100000)。 第二行輸入將用於建築物的高度。
{h1,h2,h3,...,hn}
輸入的第三行將使成本陣列
{c1,c2,c3.....,cn}
輸出
的輸出將是簡單地需要的最小代價。
樣品輸入:
3
2 1 3
10 1000 1
樣本輸出
12
說明:讓身高1的所有建築,因此成本會 10 *(2-1)+ 1000 *( 1-1)+ 1 *(3-1)即12.
我知道蠻力的方法是O(n^2)。
蠻力方法我認爲是如下:
無論公共高度h是,它必須是從
{h1,h2,h3,....,hn}
即ħ必須等於任何的H(i)中。 現在檢查每個h(i)我可以計算O(n^2)中的答案。
它可以做得更快嗎?
什麼是輸入的大小?你還應該詳細說明你想到的'O(n^2)'方法。樣本輸入和輸出也將改善問題。 – amit
@amit編輯了這個問題。 –
編輯我的解決方案。看一看。希望能幫助到你 ! – user1599964