这道题思想很简单,但是一直有一个用例没通过,是段错误。看了很多资料,才发现自己有一种情况没有考虑到,可能也就是这个题埋的坑所在。这种情况就是当我们所有的月饼都卖完了也满足不了市场需求的情况。这个时候就应该立即停止判断。
#include <iostream>
#include <algorithm>
#define N 1015
using namespace std;
struct yuebing
{
double p;
double k;
double z;
}yue[N];
bool cmp(yuebing a,yuebing b)
{
return a.p>b.p;
}
int main()
{
int n;
double d;
cin>>n>>d;
for(int i=0;i<n;i++){
cin>>yue[i].k;
}
for(int i=0;i<n;i++){
cin>>yue[i].z;
yue[i].p=yue[i].z/yue[i].k;
}
sort(yue,yue+n,cmp);
int l=0;
double res=0;
while(d!=0){
if(yue[l].k>=d) {
res+=d*yue[l].p;
d=0;
break;
}
else{
res+=yue[l].p*yue[l].k;
d=d-yue[l].k;
l++;
}
if(l==n) break;
}
printf("%.2f\n",res);
return 0;
}