您的位置:首页 > 其它

zoj 2109 简单贪心背包

2014-12-30 19:03 246 查看
用qsort过不了,sort就过了不知道为什么

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <algorithm>
using namespace std;
struct fm{
int j,f;
double jperf;
} cat[1010];
bool cmp( struct fm a,struct fm b )
{
return a.jperf>b.jperf;
}

int main(){
int m,n;
while(scanf("%d%d",&m,&n)&&m>=0&&n>=0){
int i;
for(i = 0;i<n;i++){
scanf("%d%d",&cat[i].j,&cat[i].f);
cat[i].jperf = cat[i].j *1.0 / cat[i].f;
}
sort(cat,cat + n,cmp);
i = 0;
double jb = 0;
while(m>0&&i<n){
if(cat[i].f<m){
m -= cat[i].f;
jb += cat[i].j;
}
else {
jb += cat[i].jperf*m;
m = 0;
}
i++;
}
printf("%.3lf\n",jb);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: