結論:
證明: 第乙個不用證明,很明顯
第二個:
假設wi+si>w(i+1)+s(i+1)
由於wi+si > w(i+1)+s(i+1) wi+si > si 所以交換後 兩頭牛的風險的最大值一定是小於交換前兩頭牛的風險的最大值的! 那麼總體的風險的最大值就不可能增加,只可能不變或減小。所以得證。
所以我們就按wi+si從小到大的順序依次從上到小安排牛,這樣的風險的最大值就會是所有情況裡的最小值
#include #includeusing
namespace
std;
const
int n = 50010
;typedef pair
pii;
pii q[n];
intn;
intmain()
; }
sort(q, q +n);
int ans = -2e9, sum = 0; //
sum = 0 表示最上面的那頭牛的上面的牛的重量為0 (即沒有牛) 然後依次往下面增加上面牛的重量
for(int i = 0; i < n; i++)
cout
<< ans <
return0;
}
Acwing 125 耍雜技的牛
農民約翰的n頭奶牛 編號為1.n 計畫逃跑並加入馬戲團,為此它們決定練習表演雜技。奶牛們不是非常有創意,只提出了乙個雜技表演 疊羅漢,表演時,奶牛們站在彼此的身上,形成乙個高高的垂直堆疊。奶牛們正在試圖找到自己在這個堆疊中應該所處的位置順序。這n頭奶牛中的每一頭都有著自己的重量wi以及自己的強壯程度...
AcWing 125 耍雜技的牛
這是一道不簡單的貪心,難度還是有的,老師的分析方法真的很不錯啊,老師講課 這個牛是垂直擺放的,首先我們對兩個量進行乙個比較 我們先假設後面的是最大值,那我們對兩頭牛,只要滿足wi si include include using namespace std typedef pair int,int ...
ACWing 125 耍雜技的牛
有n nn頭奶牛,編號1 n 1 sim n 1 n,每個奶牛有兩個屬性,自己的重量w iw i wi 和其強壯程度s is i si 它們要表演疊羅漢,乙個疊在另乙個上面,每個奶牛的風險值定義為其上方的所有奶牛的重量之和減去其自己的強壯程度。問如何安排疊羅漢次序可以使得風險值最大的那個奶牛的風險值...