https://www.acwing.com/activity/content/code/content/846810/
n个牛进行叠罗汉,每头牛有一个重量w和强壮程度s,风险等级定义为头上的牛的质量减去我的强壮程度,问如何叠最大的风险等级最小。
1 #include<algorithm> 2 #include<iostream> 3 using namespace std; 4 typedef long long LL; 5 const int N=50010; 6 struct node{ 7 LL w,s; 8 }a[N]; 9 bool cmp(node a,node b){ 10 return a.w+a.s<b.w+b.s; 11 } 12 int main(void){ 13 int n; 14 cin>>n; 15 for(int i=1;i<=n;i++){ 16 cin>>a[i].w>>a[i].s; 17 } 18 sort(a+1,a+n+1,cmp); 19 LL res=-99999999,sum=0; 20 for(int i=1;i<=n;i++){ 21 res=max(res,sum-a[i].s); 22 sum+=a[i].w; 23 } 24 cout<<res; 25 return 0; 26 }