题目链接
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1e4+10;
struct node
{double x,y;double k;
}a[maxn];
bool cmp(node a,node b)
{return a.k>b.k;
}
int main()
{int n,d;int i;double ans=0;cin>>n>>d;for(i=1;i<=n;i++)cin>>a[i].x;for(i=1;i<=n;i++){cin>>a[i].y;a[i].k=(double)a[i].y/(double)a[i].x;}sort(a+1,a+n+1,cmp);for(i=1;i<=n;i++){if(a[i].x<d){d-=a[i].x;ans+=a[i].y;}else{ans+=(double)d*a[i].k;break;}}printf("%.2lf\n",ans);return 0;
}