#include<iostream>
#include<algorithm>
using namespace std;
struct vw{
int v;
int w;
};
bool cmp(vw p1,vw p2){
if(p1.v<p2.v)
return true;
return false;
}
int main(){
int n,s,m,t,sum;
vw p[10];
cin>>n;
while(n--){
sum=0;
cin>>s>>m;
for(int i=0;i<s;i++)
cin>>p[i].v>>p[i].w;
sort(p,p+s,cmp);
t=m;
int i=s-1;
while(t){
if(t>p[i].w){
sum+=p[i].w*p[i].v;
t-=p[i].w;
i--;
}
else{
sum+=t*p[i].v;
t=0;
}
}
cout<<sum<<endl;
}
}
#include<algorithm>
using namespace std;
struct vw{
int v;
int w;
};
bool cmp(vw p1,vw p2){
if(p1.v<p2.v)
return true;
return false;
}
int main(){
int n,s,m,t,sum;
vw p[10];
cin>>n;
while(n--){
sum=0;
cin>>s>>m;
for(int i=0;i<s;i++)
cin>>p[i].v>>p[i].w;
sort(p,p+s,cmp);
t=m;
int i=s-1;
while(t){
if(t>p[i].w){
sum+=p[i].w*p[i].v;
t-=p[i].w;
i--;
}
else{
sum+=t*p[i].v;
t=0;
}
}
cout<<sum<<endl;
}
}
本文提供了一个使用C++编写的程序示例,该程序通过输入一系列带有价值和重量的商品,根据商品的价值密度进行排序,并在给定的容量限制下选择总价值最大的商品组合。此算法适用于解决类似背包问题的应用场景。
1199

被折叠的 条评论
为什么被折叠?



