贪心,每次都尽可能的拿性价比最好的。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct node{
double w,p,t;
}d[150];
bool cmp(const node &a,const node &b)
{
return a.t>b.t;
}
int main(){
int n,t;
cin>>n>>t;
for(int i=0;i<n;i++){
cin>>d[i].w>>d[i].p;
d[i].t=d[i].p/d[i].w;
}
sort(d,d+n,cmp);
double ans=0,now=0;
for(int i=0;i<n;i++){
if(now+d[i].w<=t){
ans+=d[i].p;
now+=d[i].w;
}
else {
ans+=(t-now)*d[i].t;
break;
}
}
printf("%.2f\n",ans);
return 0;
}