1644 Cow Acrobats TZC

来源:互联网 发布:航天信息开票软件升级 编辑:程序博客网 时间:2024/05/08 17:31

  

Cow Acrobats

时间限制(普通/Java):1000MS/10000MS     运行内存限制:65536KByte
总提交: 7            测试通过: 3

http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1644

描述

Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away and join the circus. Their hoofed feet prevent them from tightrope walking and swinging from the trapeze (and their last attempt at firing a cow out of a cannon met with a dismal failure). Thus, they have decided to practice performing acrobatic stunts.

The cows aren't terribly creative and have only come up with one acrobatic stunt: standing on top of each other to form a vertical stack of some height. The cows are trying to figure out the order in which they should arrange themselves within this stack.

Each of the N cows has an associated weight (1 <= W_i <= 10,000) and strength (1 <= S_i <= 1,000,000,000). The risk of a cow collapsing is equal to the combined weight of all cows on top of her (not including her own weight, of course) minus her strength (so that a stronger cow has a lower risk). Your task is to determine an ordering of the cows that minimizes the greatest risk of collapse for any of the cows.

 

输入

* Line 1: A single line with the integer N.

* Lines 2..N+1: Line i+1 describes cow i with two space-separated integers, W_i and S_i.

输出

* Line 1: A single integer, giving the largest risk of all the cows in any optimal ordering that minimizes the risk.

 

样例输入

 

310 32 53 3

 

样例输出

 

2

 

提示

OUTPUT DETAILS:

Put the cow with weight 10 on the bottom. She will carry the other two cows, so the risk of her collapsing is 2+3-3=2. The other cows have lower risk of collapsing.

 

 

 

题目意思是要求最小里最大的。最小是指risk最大在其他排序的risk最小的,而后面这个最大就是选出的最小那种排序里一个cow最大的risk(包含负数)

 贪心我们来试试。

假设:

两组就:

w1 s1

w2 s2

 

那么这种序列母牛各自的risk是:-s1    ,    w1-s2

 

还有种就是:

w2 s2

w1 s1

那么这种序列母牛各自的risk是:-s2    ,    w2-s1

 

我们假设上面那种符合要求:

那么 max(-s1,w1-s2)<max(-s2,w2-s1)

 

现在不知道max里面谁大,所以我们全部假设。

1.假设-s1>w1-s2    -s2>w2-s1

那么-s1<-s2      三式子联立矛盾。

2.-假设-s1>w1-s2    -s2<w2-s1

那么-s1<w2-s1    也矛盾与题目。

3.假设 –s1<w1-s2    -s2>w2-s1

那么  w1-s2<-s2   也与题目矛盾。

4.假设–s1<w1-s2    –s2<w2-s1

那么 w1-s2<w2-s1  w1+s1<s2+w2

所以第四种成立。

所以先对两个和升序排序即可,就是最优 然后在里面求最大的值就行了。

声明:上面非官方证明,只是参考,如果说的不对请提出来~~~谢谢~~

看代码:

原创粉丝点击