中文翻译可参照乙级1020。
按照每种月饼的单价,从高到低开始卖,卖完为止,累计计算每种月饼的花费。
注:
测试点2考察库存不为整数的情况
测试点3考察所有月饼库存总和不满足需求。
我一直卡在测试点三,提示我段错误。所以以后大家要注意如果段错误,可能是数组越界,需要对数组序号进行控制。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct yuebing
{
double weight;
double xiaoyi;
}moon[1010];
bool cmp(yuebing a,yuebing b)
{
return a.xiaoyi/a.weight>b.xiaoyi/b.weight;
}
int main()
{
int n;
double d;
cin>>n>>d;
double zong=0;
for(int i=0;i<n;i++)
{
cin>>moon[i].weight;
}
for(int i=0;i<n;i++)
{
cin>>moon[i].xiaoyi;
}
sort(moon,moon+n,cmp);
int j=0;
while(d>0&&j<n)//注意控制j的大小,否则测试点3段错误
{
if(moon[j].weight>d)
zong=d*moon[j].xiaoyi/moon[j].weight+zong;
else
zong=zong+moon[j].xiaoyi;
d=d-moon[j].weight;
j++;
}
printf("%.2f",zong);
return 0;
}