思路:
大水题,贪心法,每次拿单位价值最大的金币即可。
AC代码:
#include<bits/stdc++.h>
#include<iomanip>
using namespace std;
struct coin{
double w;
double v;
}a[105];
bool cmp(coin a,coin b){
return a.v/a.w > b.v/b.w;
}
int main(){
int n,t,k=1;
double ans=0;
cin>>n>>t;
for(int i=1;i<=n;i++){
cin>>a[i].w>>a[i].v;
}
sort(a+1,a+n+1,cmp);
while(t>a[k].w){
t-=a[k].w;
ans+=a[k].v;
k++;
}
ans+=(a[k].v/a[k].w)*t;
cout<<fixed<<setprecision(2)<<ans;
return 0;
}