题意:
有n个巨人,每个巨人都有肩高和头高。n个巨人叠成一列的高度为(除最上面巨人的肩高,其他巨人肩高之和)+最上面巨人的头高。问巨人们能叠成的最高高度是多少。
思路:
a[i],b[i]分别表示肩高、头高。求出其中a[i]和b[i]差距最大的一组放最上面,其他的随便放(其他的顺序对于答案没有影响)
易错点:1.不能算到到现在差距最大的就加上,要算到最后再加。
2.最后加上a[i]头高的时候要把答案中a[i]肩高减去。
代码:(c++)
#include<bits/stdc++.h>
using namespace std;
int n;
long long a[200010],b[200010],c[200010],mx=-1,mxi,tot;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i]>>b[i];
c[i]=abs(a[i]-b[i]);
if(c[i]>mx) mx=c[i],mxi=i;
tot+=a[i];
}
tot-=a[mxi];
tot+=b[mxi];
cout<<tot;
return 0;
}
884




被折叠的 条评论
为什么被折叠?



