题目链接:1020月饼
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
double D;
const int N = 1005;
struct node{
double sum;//总库存量
double price;//总价格
double unit_price;//单价
}arr[N];
bool cmp(node& x,node &y){
return x.unit_price>y.unit_price;//单价从高到底排序
}
int main()
{
scanf("%d",&n);
scanf("%lf",&D);//总需求量
for(int i=0;i<n;i++){
double x;
scanf("%lf",&x);
arr[i].sum=x;
}
for(int i=0;i<n;i++){
double y;
scanf("%lf",&y);
arr[i].price=y;
arr[i].unit_price = arr[i].price/arr[i].sum;
}
sort(arr,arr+N,cmp);
double maxSell=0;
for(int i=0;i<n;i++){
if(arr[i].sum<=D){
D -= arr[i].sum;
maxSell += arr[i].price;
}else if(arr[i].sum>D){
maxSell += arr[i].unit_price*D;
break;
}
}
printf("%.2f",maxSell);
system("pause");
return 0;
}