#include<iostream> #include<cmath> #include<algorithm> struct Moon { double Tonnes; //吨数;刚开始的时候定义的前两个都是int类型,然后有两分就被扣掉了;后来查了下其他博友的知道是精度问题 double Totalprice;//总价 double unitPrice; //单位价格 }M[1001]; bool cmp(Moon a,Moon b) { return a.unitPrice>b.unitPrice; } using namespace std; int main() { int N=0,Needs=0;//N为输入月饼数,Needs为市场需求 cin>>N>>Needs;
//输入参数 for(int i=0;i<N;i++) { cin>>M[i].Tonnes; } for(int i=0;i<N;i++) { cin>>M[i].Totalprice; } int sum_price=0; for(int i=0;i<N;i++) { M[i].unitPrice=(double)M[i].Totalprice/M[i].Tonnes; }
//排序方便计算 sort(M,M+N,cmp); int Remainder=Needs; //Remainder为余钱 int x=0; //传递上级的Remaninder double sum=0; //总的价格
//计算价格最大化 for(int i=0;i<N;i++) { x=Remainder; Remainder=Remainder-M[i].Tonnes; if(Remainder>0) { sum+=M[i].Totalprice; }else { sum+=x*M[i].unitPrice; break; } } printf("%.2lf",sum); return 0; }