HDU 4310 Contest 2

贪心,注意排序条件。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

const int N=25;

struct En{
	int DSP,HP;
}E[N];

bool cmp(En a,En b){
	if(a.DSP*1.0/a.HP>b.DSP*1.0/b.HP)
	return true;
	return false;
}

int main(){
	int n;__int64 ans,np;
	while(scanf("%d",&n)!=EOF){
		for(int i=0;i<n;i++)
		scanf("%d%d",&E[i].DSP,&E[i].HP);
		sort(E,E+n,cmp);
		ans=np=0;
		for(int i=0;i<n;i++){
			np+=(__int64)E[i].HP;
			ans+=(np)*(__int64)E[i].DSP;
		}
		printf("%I64d
",ans);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/jie-dcai/p/4054877.html