题意
如何售卖月饼使得收益最大
思路
利用月饼的单价从大到小排序
坑点
- 1.保留小数点后两位
- 2.判断当前种类的月饼是否都需要
- 3.记得写就行了,真的很简答就一个简单的结构体应用
#include<bits/stdc++.h>
using namespace std;struct name{
double k;//库存量
double sh;//总售价
double dj;//单价
}num[1100];
bool cmp(name a,name b)//按照单价从大到小排
{
return a.dj>b.dj;
}
int main()
{
int n,s;
cin>>n>>s;
for(int i=1;i<=n;i++)
{
cin>>num[i].k;
}
for(int i=1;i<=n;i++)
{
cin>>num[i].sh;
num[i].dj=num[i].sh/num[i].k;//计算单价
}
sort(num+1,num+1+n,cmp);//按单价的从大到小排序
double ans=0;//记录答案
for(int i=1;i<=n;i++)
{
if(s>num[i].k)//如果需求大于当前月饼库存则都要售完
{
ans+=num[i].sh;
s-=num[i].k;
}
else{
ans+=num[i].dj*s;//反之则取所需
break;
}
}
printf("%.2lf",ans);//答案保留2位小数
return 0;
}