L2-003 月饼

按照单价高的来排序即可
但是注意存量的存储结构应该是double,题目说的是正数,而不是正整数

#include <bits/stdc++.h>
using namespace std;
#define int long long 
using pii=pair<double,double>;
int n,d;

double cl[1005];
double pe[1005];

void solve()
{
    cin>>n>>d;
    for(int i=0;i<n;i++)cin>>cl[i];
    
    for(int i=0;i<n;i++) cin>>pe[i];
    
    vector<pii>ve;//double
    for(int i=0;i<n;i++)
    {
        ve.push_back({cl[i],pe[i]});
    }
    
    sort(ve.begin(),ve.end(),[](pii a,pii b){
        return 1.0*a.second/a.first>1.0*b.second/b.first;
    });
    
   // for(auto [x,y]:ve) cout<<x<<" " ;
    
    double ans=0;
    for(int i=0;i<n;i++)
    {
        //<<d<<"\n";
        if(d>=ve[i].first) ans+=ve[i].second,d-=ve[i].first;
        else {
            if(d<=0) break;
            else {
                ans+=d*(1.0*ve[i].second/ve[i].first);
                d=0;
             }
            
        }
    }
    
    cout<<fixed<<setprecision(2)<<ans;

    
}




signed main()
{
    int t=1;
  //  cin>>t;
    while(t--) solve();
    
    
}

posted on 2025-03-30 16:07  swj2529411658  阅读(14)  评论(0)    收藏  举报

导航