贪心
2024-07-02 17:57:57
发布于:上海
7阅读
0回复
0点赞
由于金币可以随意分割,所以我们选性价比最高的即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct n{
int w,v;
}a[110];
bool cmp(n x,n y){
return x.v*y.w>x.w*y.v;
}
int main(){
int n,m;
cin>>n>>m;
double ans=0;
for(int i=0;i<n;i++) cin>>a[i].w>>a[i].v;
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
if(a[i].w<=m) ans+=a[i].v,m-=a[i].w;
else{ans+=a[i].v*m*1.0/(double)a[i].w;break;}
printf("%.2lf",ans);
return 0;
}
这里空空如也
有帮助,赞一个