首页 > 代码库 > [USACO2005][POJ3045]Cow Acrobats(贪心)

[USACO2005][POJ3045]Cow Acrobats(贪心)

题目:http://poj.org/problem?id=3045

题意:每个牛都有一个wi和si,试将他们排序,每头牛的风险值等于前面所有牛的wj(j<i)之和-si,求风险值最大的牛的最小风险值

分析:这就是noip2012 T2的来源= =只不过这里是加,noip里是乘

不妨设所有牛都按最优顺序排好了,考虑相邻的两头牛i和i+1,如果交换他们的位置,那么对前面和后面的结果都无影响,只是他们两个的风险值变化了(变大了),于是我们可以得到这个时候i和i+1的关系

设w1+w2+...+wi-1=W

那么如果i和i+1不交换:

i的风险值:W-si              ①

i+1的风险值:W+wi-si+1               ②

如果i和i+1交换:

i+1(现在在第i个位置)的风险值:W-si+1        ③

i(现在在第i+1个位置)的风险值:W+wi+1-si       ④

很容易可以看出②>③,④>①,而又假设原顺序是最优的,那么后来交换后肯定不是最优的,即②<④,即wi+si<wi+1+si+1,即最优序列一定满足wi+si<wi+1+si+1

所以算法很简单,按wi+si排序即可

总结:看见求最大的最小不能定式思维二分,当二分不行时可以观察题目的特点,抓住特点很重要