题意:给出N种货物,市场需求为D,如何安排使利润最大
题解:求出单位重量货物的利润,sort排序。
注意点:都要开浮点数
code in view
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n;
double d;
struct node{
double amount,price;
}item[maxn];
bool cmp(node a,node b){
return a.price*b.amount>b.price*a.amount;
}
int main(){
cin>>n>>d;
double res=0;
for(int i=1;i<=n;i++) cin>>item[i].amount;
for(int i=1;i<=n;i++) cin>>item[i].price;
sort(item+1,item+1+n,cmp);
for(int i=1;i<=n;i++){
if(d>=item[i].amount){
res+=item[i].price;
d-=item[i].amount;
}else{
res+=d*item[i].price/item[i].amount;
break;
}
}
printf("%.2f",res);
return 0;
}