PAT 乙级练习题1020. 月饼 (25)

来源:互联网 发布:陕西大数据集团 编辑:程序博客网 时间:2024/05/22 09:33

月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。

注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得 72 + 45/2 = 94.5(亿元)。

输入格式:

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500(以万吨为单位)的正整数D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。

输出格式:

对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2位。

输入样例:
3 2018 15 1075 72 45
输出样例:
94.50

需要注意两点:
1.除了月饼的种类数和市场最大需求量可以为整型,其余的都应该是浮点类型
2.在使用qsort函数进行排序的时候,因为我们比较的float类型,不能像整型数字那样直接相减比如计算出aa.pr-bb.pr = 0.1234,你期待return的是1,但实际被截断后return的时候是0,排序就会出现问题。
#include<stdio.h>#include<stdlib.h>struct sp{float pr;float st;}tp[1000];int cmp(const void *a,const void *b){struct sp *aa=(struct sp *)a;    struct sp *bb=(struct sp *)b;return bb->pr>aa->pr?1:-1;}int main(){ int p;float n;scanf("%d",&p);scanf("%f",&n);float rnt=0;int i;for(i=0;i<p;i++){scanf("%f",&tp[i].st);}for(i=0;i<p;i++){scanf("%f",&tp[i].pr);tp[i].pr=tp[i].pr/tp[i].st;}qsort(tp,p,sizeof(tp[0]),cmp);i=0;while(n!=0){if(i<=p&&n>0){ if(n>=tp[i].st){rnt+=tp[i].pr*tp[i].st;n=n-tp[i].st;i++;}else if(n<tp[i].st){rnt+=tp[i].pr*n;break;}else {break;}}else{break;} }printf("%.2f",rnt);return 0;  }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完宝宝腰疼怎么办 生完小孩后腰痛怎么办 生完小孩痔疮痛怎么办 生完孩子阴松弛怎么办 生完孩子乳房松弛怎么办 生完宝宝后腰痛怎么办 顺产的过程很疼怎么办 生完孩子想离婚怎么办 刨腹产后胃胀气怎么办 月子里宝宝涨肚怎么办 肠鸣放屁多便秘怎么办 趴着睡觉胃胀气怎么办 备孕三个月了还是没怀上怎么办 月子里喂奶腰疼怎么办 生完孩子子宫疼怎么办 记账凭证写错了怎么办 饥荒精神值为0怎么办 抓不住温暖我能怎么办 父亲打母亲我该怎么办 父亲对母亲家暴怎么办 摊上家暴的父亲怎么办 家暴警察不处理怎么办 父亲把母亲打了怎么办 u盘的文件打不开怎么办 头撞墙起包了怎么办 儿童头撞墙起包怎么办 头撞墙了鼓包了怎么办 北京65岁老年证怎么办 怎么办65岁免费乘车卡 5个月小孩晚上哭怎么办 婴儿要含奶头睡怎么办 我把输入法删了怎么办 头发干枯毛躁怎么办用什么洗发水 落枕后脖子歪了怎么办 睡觉睡得脖子疼怎么办? 婴儿脖子睡歪了怎么办 怀孕8个月肚皮痒怎么办 怀孕大阴唇肿了怎么办 孕妇肚皮撑的疼怎么办 我大阴唇特别长怎么办 切完洋葱辣眼睛怎么办