码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ_1629_[Usaco2007_Demo]_Cow_Acrobats_(贪心)

时间:2016-07-09 11:52:23      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

描述


http://www.lydsy.com/JudgeOnline/problem.php?id=1629

\(n\)头牛叠罗汉.第\(i\)头牛的力量为\(s_i\),重量为\(w_i\),危险值为它头上的牛的\(w\)之和减去它的\(s\),求最大危险值最小.

 

分析


注意到力量大的应该放在下面,重量大的也应该放在下面.我们想到把和值小的放在下面.

贪心很好证明.

 

 

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn=50000+5,INF=~0u>>1;
 5 int n,ans,now;
 6 struct node{
 7     int w,s,x;
 8     bool operator < (const node &a) const { return x<a.x; }
 9 }a[maxn];
10 int main(){
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++){
13         scanf("%d%d",&a[i].w,&a[i].s);
14         a[i].x=a[i].s+a[i].w;
15     }
16     sort(a+1,a+n+1);
17     ans=-INF;
18     for(int i=1;i<=n;i++){
19         ans=max(ans,now-a[i].s);
20         now+=a[i].w;
21     }
22     printf("%d\n",ans);
23     return 0;
24 }
View Code

 

BZOJ_1629_[Usaco2007_Demo]_Cow_Acrobats_(贪心)

标签:

原文地址:http://www.cnblogs.com/Sunnie69/p/5655320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!