2025-02-03 13:59:12
发布于:江苏
#include<bits/stdc++.h>
using namespace std;
struct node{
double w, v, p;
void in(){
cin>>w>>v;
p = v/w;
}
} a[1005];
bool cmp(node x, node y){
return x.p > y.p;
}
void f(){
int n, m; //m表示背包容量
double ans = 0;
cin >> m >> n;
for (int i=0; i<n; i++) a[i].in(); //成员函数
sort (a, a+n, cmp);
//按照类别拿取商品
for (int i=0; i<n; i++){
if(m >= a[i].w){//这一类商品全部拿走
ans += a[i].v;
m -= a[i].w;
}else{ //不能全部拿, 拆分拿, 将背包装满
ans += m*a[i].p;
break;
}
}
printf("%.2lf\n", ans);
// cout << fixed << setprecision(2) << ans << endl; //include <iomanip>
}
int main()
{
int T; cin >> T;
while (T--){
f();
}
return 0;
}
全部评论 2
2025-02-03 来自 上海
02025-02-03 来自 上海
0
有帮助,赞一个