0
点赞
收藏
分享

微信扫一扫

小胖吃肉


小胖吃肉




Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^


题目描述


众所周知,小胖非常喜欢吃肉。有一天,小胖发现了很多块肉。由于每一块肉的大小都不一样,并且每一块肉带给小胖的愉悦程度都不一样。但是因为小胖太胖了,所以小胖的妈妈规定小胖最多可以吃x体积的肉。小胖现在来求助于你,想让你找到一个最优的吃肉方式,使得小胖获得的愉悦度最高。



注:小胖可以只吃一块肉的一部分。


输入


首先输入一个整数T,代表有T组数据。



接下来的每组数据的第一行输入两个整数n,x。代表小胖发现了n块肉。小胖最多可以吃x体积的肉。



(n<=1000,x<=10000)



接下来的n行,每行输入两个整数a,b。代表这块肉的体积为a,单位体积的这块肉可以给小胖带来b的愉悦度。



(a<=1000,b<=10000)


输出


输出小胖最多可以获得的愉悦度为多少。


示例输入


1 2 3 10 1 1 3


示例输出


5


提示


小胖可以选择吃第二种肉1体积,吃第一种肉2体积,一共可以获得3+1*2=5的愉悦度


来源


 


示例程序

1. #include<stdio.h>  
2. int main()  
3. {  
4. int T,n,i,m,j;  
5. int a[10010],b[10010];  
6. "%d",&T);  
7. while(T--)  
8.     {  
9. int t;  
10. int sum = 0;  
11. "%d%d",&n,&m);  
12. for(i=0;i<n;i++)  
13.         {  
14. "%d%d",&a[i],&b[i]);  
15.         }  
16. for(i=0;i<n-1;i++)  
17.         {  
18. for(j=0;j<n-1-i;j++)  
19.             {  
20. if(b[j]<b[j+1])  
21.                 {  
22.                     t = b[j];  
23.                     b[j] = b[j+1];  
24.                     b[j+1] = t;  
25.                     t = a[j];  
26.                     a[j] = a[j+1];  
27.                     a[j+1] = t;  
28.                 }  
29.             }  
30.         }  
31. int ff = 1;  
32. for(i=0;i<n;i++)  
33.         {  
34. for(j=a[i];j>0;j--)  
35.             {  
36.                 sum = sum + b[i];  
37.                 m--;  
38. if(m == 0)  
39.                 {  
40.                     ff = 0;  
41. break;  
42.                 }  
43.             }  
44. if(ff == 0)  
45.             {  
46. break;  
47.             }  
48.         }  
49. "%d\n",sum);  
50.     }  
51. return 0;  
52. }

举报

相关推荐

0 条评论