L2-003 月饼 (25 分)
题目链接
题意
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5767bc725f089af0ebcc929fe1b59074.png)
思路
- 首先开一个结构体,将单价按从大到小顺序排序
- 然后将月饼的单价和总售价依次输入,再依次计算出单机,再用sort排一下序;
- 然后再依次判断当前单价最高的月饼的吨数是小于还是大于总需求;
坑点
- 要判断一下每种月饼的循环次数是否大于月饼种类
代码
#include<bits/stdc++.h>
using namespace std;
struct put{
double dun;
double dan;
double sho;
}a[1005];
bool cmp(put a,put b)
{
return a.dan>b.dan;
}
int main()
{
int t,n;
cin>>t>>n;
for(int i=1;i<=t;i++)
{
cin>>a[i].dun;
}
for(int i=1;i<=t;i++)
{
cin>>a[i].sho;
}
for(int i=1;i<=t;i++)
{
a[i].dan=a[i].sho/a[i].dun;
}
sort(a+1,a+t+1,cmp);
double sum=0;
int i=1;
while(1)
{
if(n==0)
{
break;
}
if(a[i].dun<=n)
{
n-=a[i].dun;
sum+=a[i].sho;
i++;
}
else
{
sum+=a[i].dan*n;
n=0;
}
if(i>t)
{
break;
}
}
printf("%.2lf",sum);
return 0;
}