#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
struct goods
{
double num;
double pri;
double val;
}g[1010];
bool cmp(goods x,goods y)
{
return (x.val>y.val);
}
int main()
{
int n;
double d;
cin>>n>>d;
for (int i=0;i<n;i++)
{
cin>>g[i].num;
}
for (int i=0;i<n;i++)
{
cin>>g[i].pri;
g[i].val=g[i].pri/g[i].num;
}
sort(g,g+n,cmp);
double sum=0;
for(int i=0;i<n;i++)
{
if (d>g[i].num) {sum+=g[i].pri;d-=g[i].num;}
else {sum+=d*g[i].val;break;}
}
printf("%.2f",sum);
system("pause");
return 0;
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
struct goods
{
double num;
double pri;
double val;
}g[1010];
bool cmp(goods x,goods y)
{
return (x.val>y.val);
}
int main()
{
int n;
double d;
cin>>n>>d;
for (int i=0;i<n;i++)
{
cin>>g[i].num;
}
for (int i=0;i<n;i++)
{
cin>>g[i].pri;
g[i].val=g[i].pri/g[i].num;
}
sort(g,g+n,cmp);
double sum=0;
for(int i=0;i<n;i++)
{
if (d>g[i].num) {sum+=g[i].pri;d-=g[i].num;}
else {sum+=d*g[i].val;break;}
}
printf("%.2f",sum);
system("pause");
return 0;
}
注意点:
1.尽量将大部分数据设置为double ,避免因为精度问题出错