耍雜技的牛

2021-10-06 15:00:19 字數 2162 閱讀 2972

傳送門

題意:農民約翰的n頭奶牛(編號為1…n)計畫逃跑並加入馬戲團,為此它們決定練習表演雜技。

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

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

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

這n頭奶牛中的每一頭都有著自己的重量wi以及自己的強壯程度si。

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

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

輸入格式

第一行輸入整數n,表示奶牛數量。

接下來n行,每行輸入兩個整數,表示牛的重量和強壯程度,第i行表示第i頭牛的重量wi以及它的強壯程度si。

輸出格式

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

資料範圍

1≤n≤50000,

1≤wi≤10,000,

1≤si≤1,000,000,000

輸入樣例:

310 3

2 53 3

輸出樣例:

2思路:將wi + si按照從小到大排序,最大危險係數就是最小的。

**實現:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define int long long

#define lowbit(x) (x &(-x))

#define me(ar) memset(ar, 0, sizeof ar)

#define mem(ar,num) memset(ar, num, sizeof ar)

#define rp(i, n) for(int i = 0, i < n; i ++)

#define rep(i, a, n) for(int i = a; i <= n; i ++)

#define pre(i, n, a) for(int i = n; i >= a; i --)

#define ios ios::sync_with_stdio(0); cin.tie(0);cout.tie(0);

const

int way[4]

[2]=

,,,}

;using

namespace std;

typedef

long

long ll;

typedef pair pll;

const

int inf =

0x3f3f3f3f3f3f3f3f

;const

double pi =

acos(-

1.0)

;const

double exp =

1e-8

;const ll mod =

1e9+7;

const

int n =

2e5+5;

int n;

struct node

}a[n]

;signed

main()

;}sort

(a, a + n)

;int sum =

0, ans =

-2e9

;for

(int i =

0; i < n; i ++

) cout << ans << endl;

return0;

}

耍雜技的牛

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

耍雜技的牛

農民約翰的 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...