#include <stdio.h>
#include <stdlib.h>
struct rice
{
int p,h;
}r[1010];
void swap(struct rice *a,struct rice *b)
{
struct rice t;
t=*a;
*a=*b;
*b=t;
}
void quicksort(struct rice *s,int m,int left,int right)
{
int i,j;
if(left<right){
i=left+1;
j=right;
while(i<j){
if(s[i].p>s[left].p){
swap(&s[i],&s[j]);
j--;
}else
{
i++;
}
}
if(s[i].p>=s[left].p){
i--;
}
swap(&s[left],&s[i]);
quicksort(s,m,left,i);
quicksort(s,m,j,right);
}
}
int main()
{
int c,m,i;
double n;
scanf("%d",&c);
while(c--){
scanf("%lf%d",&n,&m);
for(i=0;i<=m-1;i++)scanf("%d%d",&r[i].p,&r[i].h);
quicksort(r,m,0,m-1);
double ans=0;
for(i=0;i<=m-1;i++){
if(r[i].h*r[i].p<=n){
ans+=r[i].h;
n=n-r[i].h*r[i].p;
}else
{
ans+=n/r[i].p;
break;
}
}
printf("%.2lf\n",ans);
}
return 0;
}
将所有大米按单价从低到高排序
尽可能多选单价低的
本文介绍了一个通过快速排序算法对不同单价的大米进行排序的程序。该程序首先读取输入的大米数量及每种大米的单价和数量,然后按照单价对大米进行排序,并计算在预算范围内能购买的最大数量的大米。
1339

被折叠的 条评论
为什么被折叠?



