题目
pata1070
题目思路
题目可以利用贪心算法的思想,按照单价对月饼进行排序,之后依次按单价从低到高的顺序购买。需要注意的是输入的需求量m也要用浮点型来记录,不然会有一个点无法通过,我试了好久之后看晴神的《算法笔记》才改正过来。
参考代码
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct{
float a;
float pr;
}cu;
bool cmp(cu p1,cu p2);
int main()
{
int n,k=0;
float b,z,m=0;
cin>>n>>m;
cu p[n];
for(int i=0;i<n;i++)
{
scanf("%f",&p[i].a);
}
for(int i=0;i<n;i++)
{
scanf("%f",&b);
p[i].pr=b/p[i].a;
}
sort(p,p+n,cmp);
while(m!=0&&k<n)
{
if(p[k].a>m)
{
z+=m*p[k].pr;
m=0;
}
else
{
z+=p[k].a*p[k].pr;
m-=p[k].a;
k++;
}
}
printf("%.2f",z);
return 0;
}
bool cmp(cu p1,cu p2)
{
return p1.pr>p2.pr;
}