首页 > 其他 > 详细

BZOJ_1629_[Usaco2007_Demo]_Cow_Acrobats_(贪心)

时间:2016-07-09 11:50:52      阅读:186      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!