P1842 奶牛玩雜技

2022-05-05 16:51:18 字數 1369 閱讀 7674

題目鏈結

這道題目知道結論是比較好寫的,關鍵是結論是怎樣推出來的。

我們先只考慮相鄰的兩個奶牛,設這兩個奶牛為 \(a\) 和 \(b\) ,這兩個奶牛上面的奶牛總重量為 \(w\) ,所以我們考慮 \(a\) 在上面的情況和 \(b\) 在上面的情況。

\(a\) 在上面的情況:

\(a\) 的壓扁指數為 \(w-s_a\) , \(b\) 的壓扁指數為 \(w+w_a-s_b\) 。

\(b\) 在上面的情況:

\(b\) 的壓扁指數為 \(w-s_b\) , \(a\) 的壓扁指數為 \(w+w_b-s_a\) 。

我們如果想讓 \(a\) 在 \(b\) 的上面比 \(b\) 在 \(a\) 的上面更優,就需要滿足 \(\max(w-s_a,w+w_a-s_b) <\max(w-s_b,w+w_b-s_a)\) 。

但是直接比較是沒有辦法比較的。

讓我們看一下由已知條件我們可以推出來什麼。

\(w-s_a,所以我們可以發現 \(w-s_a\) 不用和 \(w+w_b-s_a\) 和 \(w-s_b\) 比較。因為我們設 \(w+w_b-s_a\) 為 \(\max\) ,那麼直接就可以得出結論。如果設 \(w-s_b\) 為 \(\max\) ,那麼就有 \(w-s_a。所以 \(w-s_a<\max(w-s_b,w+w_b-s_a)\)

所以現在我們只需要讓 \(w+w_a-s_b<\max(w-s_b,w+w_b-s_a)\) 就可以了。

\(w+w_a-s_b>w-s_b\) ,和上面的證明相似,我們可以證明 \(w-s_b<\max(w-s_a,w+w_a-s_b)\) 。

所以不論怎樣 \(w+w_a-s_b\) 和 \(w-s_b\) 是沒有可能滿足條件的,所以我們只能讓

\[ \left\

w+w_a-s_b

解得 $$s_a+w_a#define pii pair#define mp make_pair

#define one first

#define two second

#define ll long long

using std::sort;

using std::pair;

using std::max;

using std::mp;

const int n=5e4+100;

const ll inf=9223372036854775807;

int n;

ll maxx=-inf;

pii id[n];

ll sum[n];

inline bool cmp(pii a,pii b)

int main()

printf("%lld\n",maxx);

return 0;

}

題解 P1842 奶牛玩雜技

構造相鄰的兩頭牛,看能不能貪心,且看需要滿足什麼條件的時候才能貪心。設有相鄰的兩頭牛a,b,來討論一下在滿足什麼條件的的情況下a放在b上面比b放在a上面更優 設放在a,b上面的牛的總重為w i a放在b上面 a的壓扁值 w sa b的壓扁值 w wa sb ii b放在a上面 a的壓扁值 w wb ...

洛谷 P1842 進擊的奶牛 二分法

題目描述 farmer john建造了乙個有n 2 n 100,000 個隔間的牛棚,這些隔間分布在一條直線上,座標是x1,xn 0 xi 1,000,000,000 他的c 2 c n 頭牛不滿於隔間的位置分布,它們為牛棚裡其他的牛的存在而憤怒。為了防止牛之間的互相打鬥,farmer john想把...

luoguP1842奶牛玩雜技

解決方案 1.貪心 不像是能用動歸做 2.以什麼來貪心呢 3.重量,顯然不行 4.力量也不行 5.猜測 與重量和力量都有關,再分析樣例,發現是重量 力量 6.證明 設有a和b兩頭相鄰的牛 a在下,b在上 7.若wa sa8.交換a和b位置,設b上方牛總體重為w 9.a原 w wb sa b原 w s...