0%

PAT A1070 Mooncake

题目链接

解题思路

这道题目算是个小学乘除法问题吧,使用贪心法来做,现在算出每个商品的平均价格,然后根据平均价格排序,最后按照需求计算总收益。

注意

涉及double类型的除法,为了保证精度,都使用double类型来存储,不然会有一个测试点不通过!

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1e3+10;
struct Moon{
double amounts;
double price;
double mean;
}moons[maxn];
int n,m;
bool cmp(const Moon& a,const Moon& b){
return a.mean>=b.mean;
}

int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%lf",&moons[i].amounts);
for(int i=0;i<n;i++){
scanf("%lf",&moons[i].price);
moons[i].mean=moons[i].price/moons[i].amounts;
}
sort(moons,moons+n,cmp);
double sum=0.0;
for(int i=0;i<n;i++){
if(moons[i].amounts>m){
sum+=m*moons[i].mean;
break;
}else{
sum+=moons[i].price;
m-=moons[i].amounts;
}
}

printf("%.2f",sum);
return 0;
}

本文标题:PAT A1070 Mooncake

文章作者:GavinYGM

发布时间:2020年08月28日 - 23:08

最后更新:2020年08月29日 - 00:08

原始链接:http://www.gavinygm.cn/2020/08/28/PAT-A1070-Mooncake/

许可协议: 转载请保留原文链接及作者。