把单位价值从大到小贪心
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int v;
int w;
};
int cmp_v(struct node x, struct node y){
return x.v>y.v;
}
int main()
{
int T,s,m;
int sum_w,sum_v;
node a[11];
cin>>T;
while(T--)
{
sum_w=0,sum_v=0;
cin>>s>>m;
for(int i=0;i<s;i++){
cin>>a[i].v>>a[i].w;
}
sort(a,a+s,cmp_v);
for(int i=0;i<s;i++){
if(sum_w+a[i].w<=m){
sum_v+=a[i].v*a[i].w;
sum_w+=a[i].w;
}
else{
sum_v+=(m-sum_w)*a[i].v;
break;
}
}
cout<<sum_v<<endl;
}
return 0;
}