题目链接:
https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200
AC代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int MAXN=1010;
struct YueBing{
double Price;//单价
double Sale;//总售价
double Stock;//库存量
}m[MAXN];
bool cmp(struct YueBing a,struct YueBing b){
return a.Price>b.Price;
}
int main(){
int N,D;
scanf("%d%d",&N,&D);
for(int i=0;i<N;i++){
scanf("%lf",&m[i].Stock);
}
for(int i=0;i<N;i++){
scanf("%lf",&m[i].Sale);
}
for(int i=0;i<N;i++){
m[i].Price=m[i].Sale/m[i].Stock;
}
sort(m,m+N,cmp);
double ans=0;//最大收益
for(int i=0;i<N;i++){
if(m[i].Stock>=D){
ans+=m[i].Price*D;
break;
}
else{
D-=m[i].Stock;
ans+=m[i].Sale;
}
}
printf("%.2lf",ans);
return 0;
}