本文主要是介绍老人是真饿了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简单贪心 计算出单价然后按照单价排序把便宜的先买
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{double p;double h;
}a[1010];
bool cmp(node a,node b){return a.p<b.p;
}
int main(){int C; scanf("%d",&C);while(C--){double sum=0;double n;int m;scanf("%lf %d",&n,&m);for(int i=0;i<m;i++)scanf("%lf%lf",&a[i].p,&a[i].h);sort(a,a+m,cmp);int i=0;while(n>a[i].p){while(a[i].h){sum++;n-=a[i].p;a[i].h--;if(n<a[i].p)break;}//先买到便宜的大米 判断是否卖完if(n<a[i].p&&a[i].h)break;i++;}sum+=n/a[i].p;//剩余不够的买一斤大米的钱所买的大米数printf("%.2lf\n",sum); }return 0;
}
这篇关于老人是真饿了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!