//此为背包问题 ,289为0-1背包
#include<stdio.h>
#include<stdlib.h>
typedef struct data
{
int w;
int v;
}data;
int cmp(const void *a,const void *b)
{
return ((data*)a)->v-((data*)b)->v;
}//不加括号不行啊
int main()
{
data a[10];
int T,v,w,sum,s,m;
scanf("%d",&T);
while(T--)
{
sum=0;
scanf("%d%d",&s,&m);
for(int i=0;i<s;i++)
scanf("%d%d",&a[i].v,&a[i].w);
qsort(a,s,sizeof(data),cmp);
for(int i=s-1;m>0;i--)
//发现i也要加上int,否则\调试\未命名1.cpp name lookup of `i' changed for new ISO `for' scoping
if(a[i].w<=m)
{
sum+=a[i].v*a[i].w;
m-=a[i].w;
}
else
{
sum+=m*a[i].v;
m=0;
}
printf("%d\n",sum);
}
system("pause");
return 0;
}
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.