#include<iostream>
#include<algorithm>
using namespace std;
const int mMAX=1001;
struct node{
double j,f,re;
} a[mMAX];//比值的结果排序后应该与原始值一一对应,所以需要用struct
int cmp(const void *a,const void *b)
{
node* aq=(node*)a;
node* bq=(node*)b;
if(aq->rere)return -1;
return 1;
}
int main(int argc, char *argv[])
{
int sum_F;
int h_num;
double re;
while(cin>>sum_F>>h_num)
{
if(sum_F==-1&&h_num==-1)
break;
re=0.0;
for(int i=0;i
{
cin>>a[i].j>>a[i].f;
a[i].re=a[i].f/a[i].j;
}
qsort(a,h_num,sizeof(a[0]),cmp); //主要学会qsort的使用
for(int i=0;i
{
if(a[i].f<=sum_F)
{
re+=a[i].j;
sum_F-=a[i].f;
}else
{
re+=a[i].j*sum_F/a[i].f;
break;
}
}
printf("%.3lf\n",re);
}
return 0;
}
贪心之猫鼠交易
最新推荐文章于 2023-12-07 13:14:13 发布