题目描述
对于幸存的灾民来说,最急待解决的显然是温饱问题,救灾部队一边在组织人员全力打通交通,一边在组织采购粮食。现在假设下拨了一定数量的救灾经费要去市场采购大米(散装)。如果市场有m种大米,各种大米的单价和重量已知,请问,为了满足更多灾民的需求,最多能采购多少重量的大米呢?
输入
输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(0
1
7 2
3 3
4 4
样例输出
2.33
思路:和糖果问题类似,但要注意区别,
#include<bits/stdc++.h>
using namespace std;
struct rice
{
int p,h;
int cost;
}q[1001];
bool cmp(rice a,rice b)
{
return a.p<b.p;
}
int main()
{
int m,n,s;
cin>>s;
while(s--)
{
int i,j,k;
double sum=0;
cin>>n>>m;
for(i=0;i<m;i++)
{
cin>>q[i].p>>q[i].h;
q[i].cost=q[i].p*q[i].h;
}
sort(q,q+m,cmp);
for(i=0;i<m;i++)
{
if(q[i].cost<=n)
{
sum+=q[i].h;
n-=q[i].cost;
}
else
{
sum=sum+n*1.0/q[i].p;
break;
}
if(n==0)break;
}
printf("%0.2lf\n",sum);
}
return 0;
}