耍雜技的牛

2021-10-19 01:49:55 字數 3100 閱讀 3182

農民約翰的n

nn頭奶牛(編號為1..

n1..n

1..n

)計畫逃跑並加入馬戲團,為此它們決定練習表演雜技。

奶牛們不是非常有創意,只提出了乙個雜技表演:

疊羅漢,表演時,奶牛們站在彼此的身上,形成乙個高高的垂直堆疊。

奶牛們正在試圖找到自己在這個堆疊中應該所處的位置順序。

這n

nn頭奶牛中的每一頭都有著自己的重量w

iw_i

wi​以及自己的強壯程度s

is_i

si​。

一頭牛支撐不住的可能性取決於它頭上所有牛的總重量(不包括它自己)減去它的身體強壯程度的值,現在稱該數值為風險值,風險值越大,這只牛撐不住的可能性越高。

您的任務是確定奶牛的排序,使得所有奶牛的風險值中的最大值盡可能的小。

輸入格式

第一行輸入整數n

nn,表示奶牛數量。

接下來n

nn行,每行輸入兩個整數,表示牛的重量和強壯程度,第i

ii行表示第i

ii頭牛的重量w

iw_i

wi​以及它的強壯程度s

is_i

si​。

輸出格式

輸出乙個整數,表示最大風險值的最小可能值。

資料範圍

1 ≤n

≤50000,1

≤wi≤

10,

000,1≤

si≤1

,000

,000

,000

1≤n≤50000,\\ 1≤w_i≤10,000,\\ 1≤s_i≤1,000,000,000

1≤n≤50

000,

1≤wi

​≤10

,000

,1≤s

i​≤1

,000

,000

,000

輸入樣例:

3103

2533

輸出樣例:

2
思路

貪心策略:按照w

ww和s

ss的和進行排序

貪心證明: 鄰項交換

假設排序後當前從下往上第i

ii頭牛和第i+1

i+1i+

1頭牛的風險值分別為∑j=

0i−1

wj−s

i\sum\limits_^w_j-s_i

j=0∑i−

1​wj

​−si

​,∑j=0

iwj−

si+1

\sum\limits_^w_j-s_

j=0∑i​

wj​−

si+1

​交換這兩頭牛後的風險值分別為∑j=

0i−1

wj−s

i+

1\sum\limits_^w_j-s_

j=0∑i−

1​wj

​−si

+1​,∑j=

0i−1

wj+w

i+1−

si

\sum\limits_^w_j+w_-s_i

j=0∑i−

1​wj

​+wi

+1​−

si​去掉重複項∑j=

0i−1

wj

\sum\limits_^w_j

j=0∑i−

1​wj

​後交換前和交換後的值分別為

交換前:−si

−s_i

−si​

,w i−

si+1

w_i−s_

wi​−si

+1​交換後:−si

+1

−s_−s

i+1​

,w i+

1−si

w_−s_i

wi+1​−

si​易知

w i−

si+1

>−s

i+

1w_i−s_>−s_

wi​−si

+1​>−s

i+1​

w i+

1−si

>−s

iw_−s_i>−s_i

wi+1​−

si​>−s

i​所以只需要比較wi−

si+1

w_i-s_

wi​−si

+1​和wi+

1−si

w_-s_i

wi+1​−

si​的大小即可

w i−

si+1

+1−s

iw_i−s_wi

​−si

+1​+1​−

si​即wi+

si

+1+s

i+

1w_i+s_iwi

​+si

​+1​+

si+1

​所以和越小的風險值越小

**

#include

using

namespace std;

typedef

long

long ll;

const

int inf=

0x3f3f3f3f

;typedef pairint> pli;

vectora;

int n;

ll ans=

-inf;

ll sum;

intmain()

);}sort

(a.begin()

, a.

end())

;for

(auto

&it:a)

printf

("%lld\n"

, ans)

;return0;

}

耍雜技的牛

傳送門 題意 農民約翰的n頭奶牛 編號為1 n 計畫逃跑並加入馬戲團,為此它們決定練習表演雜技。奶牛們不是非常有創意,只提出了乙個雜技表演 疊羅漢,表演時,奶牛們站在彼此的身上,形成乙個高高的垂直堆疊。奶牛們正在試圖找到自己在這個堆疊中應該所處的位置順序。這n頭奶牛中的每一頭都有著自己的重量wi以及...

耍雜技的牛

農民約翰的 n 頭奶牛 編號為 1.n 計畫逃跑並加入馬戲團,為此它們決定練習表演雜技。奶牛們不是非常有創意,只提出了乙個雜技表演 疊羅漢,表演時,奶牛們站在彼此的身上,形成乙個高高的垂直堆疊。奶牛們正在試圖找到自己在這個堆疊中應該所處的位置順序。這n頭奶牛中的每一頭都有著自己的重量wi以及自己的強...

125 耍雜技的牛

結論 證明 第乙個不用證明,很明顯 第二個 假設wi si w i 1 s i 1 由於wi si w i 1 s i 1 wi si si 所以交換後 兩頭牛的風險的最大值一定是小於交換前兩頭牛的風險的最大值的!那麼總體的風險的最大值就不可能增加,只可能不變或減小。所以得證。所以我們就按wi si...