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) 收藏 举报
浙公网安备 33010602011771号