您的位置:首页 > 其它

背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果

2017-07-13 21:13 1071 查看
#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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐