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