码迷,mamicode.com
首页 > 其他好文 > 详细

【PAT甲级】1070 Mooncake (25 分)(贪心水中水)

时间:2019-11-03 18:29:40      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:fine   trick   pac   mil   mic   second   int   space   最大利润   

题意:

输入两个正整数N和M(存疑M是否为整数,N<=1000,M<=500)表示月饼的种数和市场对于月饼的最大需求,接着输入N个正整数表示某种月饼的库存,再输入N个正数表示某种月饼库存全部出手的利润。输出最大利润。

trick:

测试点2可能包含M不为整数的数据。(尽管题面说明M是正整数,可是根据从前PAT甲级题目的经验,有可能不是整数。。。。。)

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
double a[1007];
double b[1007];
pair<double,int>p[1007];
int main(){
int n;
double m;
scanf("%d%lf",&n,&m);
for(int i=1;i<=n;++i)
scanf("%lf",&a[i]);
for(int i=1;i<=n;++i)
scanf("%lf",&b[i]);
for(int i=1;i<=n;++i)
p[i].first=b[i]/a[i],p[i].second=i;
sort(p+1,p+1+n);
double sum=0;
double ans=0;
for(int i=n;i;--i){
if(sum+a[p[i].second]<=m){
sum+=a[p[i].second];
ans+=b[p[i].second];
}
else{
ans+=(m-sum)*p[i].first;
break;
}
}
printf("%.2f",ans);
return 0;
}

【PAT甲级】1070 Mooncake (25 分)(贪心水中水)

标签:fine   trick   pac   mil   mic   second   int   space   最大利润   

原文地址:https://www.cnblogs.com/ldudxy/p/11788078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!