NYOJ--106

原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=106

分析:排序加贪心。

背包问题

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,s,m,i,j,value,temp;int str[11][2];
 5     scanf("%d",&n);
 6     while(n--)
 7     {
 8         value=0;
 9         scanf("%d%d",&s,&m);
10         for(i=0;i<s;i++)
11             scanf("%d%d",&str[i][0],&str[i][1]);
12         for(i=0;i<s-1;i++)
13             for(j=i+1;j<s;j++)
14             {
15                 if(str[i][0]<str[j][0])
16                 {
17                     temp=str[i][0];str[i][0]=str[j][0];str[j][0]=temp;
18                     temp=str[i][1];str[i][1]=str[j][1];str[j][1]=temp;
19                 }
20             }
21         for(i=0;i<s;i++)
22         {
23             if(m==0)break;
24             else if(str[i][1]<=m){m-=str[i][1];value+=str[i][1]*str[i][0];}
25             else {value+=str[i][0]*m;m=0;}
26         }
27         printf("%d\n",value);
28     }
29     return 0;
30 }
31 
32 
33         
34             
35         

 

posted @ 2013-05-31 22:31  EtheGreat  阅读(151)  评论(0编辑  收藏  举报