PAT 1070

题目 : Mooncake

分值 : 25
难度 : 简单题
思路 : 结构体排序
坑点 : 不管是单价还是数量,都一定要是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
37
38
39
40
41
#include <iostream>
#include <algorithm>
using namespace std ;
#define Max_ 9999999
typedef struct Node
{
double amount ;
double prince ;
double avg ;
}Nodes;
Nodes data[1001];
bool cmp(Node a ,Node b)
{
return a.prince/a.amount > b.prince/b.amount ;
}
int main() {
int N ;
double G ;
cin >> N >>G ;
for(int i = 0 ; i < N ; i++)
cin >>data[i].amount;
for(int i = 0 ; i< N ; i++)
cin >>data[i].prince;
sort(data,data+N ,cmp) ;
double sum = 0 ;
for(int i = 0 ;i< N ; i++)
{
if(G <data[i].amount)
{
sum += G* (data[i].prince/data[i].amount) ;
break ;
}
else
{
sum += data[i].prince ;
G -= data[i].amount ;
}
}
printf("%.2lf\n", sum) ;
//cout <<sum <<endl ;
}