http://acm.hdu.edu.cn/showproblem.php?pid=2187
= =题目太长不复制了
Input
输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(0<n<=1000,0<m<=1000),分别表示经费的金额和大米的种类,然后是m行数据,每行包含2个整数p和h(1<=p<=25,1<=h<=100),分别表示单价和对应大米的重量。
Output
对于每组测试数据,请输出能够购买大米的最多重量(你可以假设经费买不光所有的大米)。
每个实例的输出占一行,保留2位小数。
每个实例的输出占一行,保留2位小数。
Sample Input
1 7 2 3 3 4 4
Sample Output
2.33
#include<stdio.h>
struct txt
{
int money;
int kg;
}dami[1111],t;
int main()
{
int C,m,n,i,j,k;
double he;
scanf("%d",&C);
for(i=1;i<=C;i++)
{
he=0;
scanf("%d%d",&n,&m);
for(j=1;j<=m;j++)
{
scanf("%d%d",&dami[j].money,&dami[j].kg);
}
for(j=1;j<=m;j++)
{
for(k=j;k<=m;k++)
{
if(dami[j].money>dami[k].money)
{
t=dami[j];
dami[j]=dami[k];
dami[k]=t;
}
}
}
for(j=1;j<=m;j++)
{
if(n-dami[j].kg*dami[j].money<0)
{
he=he+n/(double)(dami[j].money);
break;
}
else
{
he=he+dami[j].kg;
n=n-dami[j].money*dami[j].kg;
if(n==0)
break;
}
}
printf("%.2lf\n",he);
}
return 0;
}