题目中说的月饼的库存量和总售价是正数,没说是正整数,嘤嘤嘤,经验的主观带入实在可怕!!!明明离满分辣么近~
#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
double num;//该月饼的库存量
double totalprice;//该月饼的总售价
double price;//该月饼的单价
}a[1000+10];
bool cmp(node a, node b)
{
return a.price > b.price;
}//根据单价对结构体从大到小排序
int main()
{
int n;
double d;//为了方便计算,类型设置为浮点型
double ans = 0;
scanf("%d%lf", &n, &d);
for(int i = 0; i < n; i ++)
{
scanf("%lf", &a[i].num);
}
for(int i = 0; i < n; i ++)
{
scanf("%lf", &a[i].totalprice);
a[i].price = a[i].totalprice / a[i].num;//计算月饼的单价
}
sort(a, a + n, cmp);//排序
for(int i = 0; i < n; i ++)
{
if(a[i].num <= d){//当库存量小于需求量时
ans += a[i].totalprice;
d -= a[i].num;//更新需求量
}else{
ans += a[i].price * d;
d = 0;//或break
}
}
printf("%.2f", ans);
return 0;
}