题解
2025-04-19 17:27:09
发布于:广东
2阅读
0回复
0点赞
题解
#include <bits/stdc++.h>
using namespace std;
struct jiazhi{
double mn,w;
}* x;//动态数组
bool cmp(jiazhi a,jiazhi b){return a.mn/a.w>b.mn/b.w;}//用“单价”排序,从大到小
double da() {
double cnt=0;
int w,s;
cin >>w>>s;
x=new jiazhi[s+5];
for(int i=1;i<=s;i++) cin >> x[i].w >> x[i].mn;
sort(x+1,x+s+1,cmp);
for(int i=1;i<=s;i++){
if(x[i].w<=w){
cnt+=x[i].mn;
w-=x[i].w;
}else{
cnt+=x[i].mn*1.0/x[i].w*w;
break;
}
}
return cnt;
}
int main(){
int n;
cin >> n;
while(n--){
printf("%.2lf\n",da());
}
return 0;
}
这里空空如也
有帮助,赞一个