本是一道练习二分的题目。。 但是发现贪心可用。。。二分反而没想到。。
题目大意是奶牛要叠罗汉了(杂技) 。。 求最小化最大危险值, 危险值等于 一头奶牛上面所有的奶牛体重之和减去这头的力量值。
证明略了。。看到网上写了很多了。。 结果就是按照w+s排序
这道题应该也可以用二分来最小化最大值。。但是A了之后就不太想了哎。。。。
题目:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2245 | Accepted: 888 |
Description
Input
Output
Sample Input
3 10 3 2 5 3 3
Sample Output
2
Hint
Source
1 #include <algorithm> 2 #include <cstdio> 3 #include <iostream> 4 using namespace std; 5 #define MAXN 50000+10 6 #define LL long long 7 #define min(x,y) x<y?x:y 8 #define max(x,y) x<y?y:x 9 int N; 10 11 struct P 12 { 13 LL w,s; 14 bool operator < (const P& x) const 15 { 16 return (w+s)<(x.w+x.s); 17 } 18 }; 19 20 P cow[MAXN]; 21 22 23 int main() 24 { 25 scanf("%d",&N); 26 27 LL l =0 , r= 0; 28 for(int i=0;i<N;i++) 29 { 30 scanf("%lld%lld",&cow[i].w,&cow[i].s); 31 } 32 sort( cow,cow+N); 33 LL ans = -10000000000; 34 LL sum =0; 35 for(int i=0;i<N;i++) 36 { 37 ans = max( sum - cow[i].s, ans); 38 sum+= cow[i].w; 39 } 40 printf("%lld\n",ans); 41 42 return 0; 43 }
原文:http://www.cnblogs.com/doubleshik/p/3537542.html