链接:http://acm.hdu.edu.cn/showproblem.php?pid=4310
按比值排序:dps/hp...为了避免小数出现cmp函数写成相乘的形式
#include <iostream> #include<algorithm> using namespace std; class hero { public: int hp; int dps; }; //按dps/hp排序 bool cmp(hero a,hero b) { return a.dps*b.hp>b.dps*a.hp; } int main() { int n; int ans; int sum; hero data[25]; while(cin>>n) { ans=0; sum=0; for(int i=0;i<n;i++) { cin>>data[i].dps>>data[i].hp; sum+=data[i].dps; } sort(data,data+n,cmp); for(int i=0;i<n;i++) { ans+=sum*data[i].hp; sum-=data[i].dps; } cout<<ans<<endl; } return 0; }