File tree 1 file changed +9
-30
lines changed
1 file changed +9
-30
lines changed Original file line number Diff line number Diff line change 1
1
L2-003 . 月饼
2
2
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。
3
-
4
3
注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3 种月饼,其库存量分别为18 、15 、10 万吨,总售价分别为75 、72 、45 亿元。如果市场的最大需求量只有20 万吨,那么我们最大收益策略应该是卖出全部15 万吨第2 种月饼、以及5 万吨第3 种月饼,获得 72 + 45 /2 = 94.5 (亿元)。
5
-
6
4
输入格式:
7
-
8
5
每个输入包含1 个测试用例。每个测试用例先给出一个不超过1000 的正整数N表示月饼的种类数、以及不超过500 (以万吨为单位)的正整数D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。
9
-
10
6
输出格式:
11
-
12
7
对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2 位。
13
-
14
8
输入样例:
15
9
3 20
16
10
18 15 10
@@ -21,37 +15,22 @@ L2-003. 月饼
21
15
22
16
#include < iostream>
23
17
#include < algorithm>
24
-
18
+ # include < vector >
25
19
using namespace std ;
26
-
27
20
struct mooncake {
28
- float mount;
29
- float price;
30
- float unit;
21
+ float mount, price, unit;
31
22
};
32
-
33
23
int cmp (mooncake a, mooncake b) {
34
24
return a.unit > b.unit ;
35
25
}
36
-
37
26
int main () {
38
- int n;
39
- cin >> n;
40
- int need;
41
- cin >> need;
42
-
43
- mooncake *a = new mooncake [n];
44
- for (int i = 0 ; i < n; i++) {
45
- cin >> a[i].mount ;
46
- }
47
- for (int i = 0 ; i < n; i++) {
48
- cin >> a[i].price ;
49
- }
50
- for (int i = 0 ; i < n; i++) {
51
- a[i].unit = a[i].price / a[i].mount ;
52
- }
53
- sort (a, a + n, cmp);
54
-
27
+ int n, need;
28
+ cin >> n >> need;
29
+ vector<mooncake> a (n);
30
+ for (int i = 0 ; i < n; i++) scanf (" %f" , &a[i].mount );
31
+ for (int i = 0 ; i < n; i++) scanf (" %f" , &a[i].price );
32
+ for (int i = 0 ; i < n; i++) a[i].unit = a[i].price / a[i].mount ;
33
+ sort (a.begin (), a.end (), cmp);
55
34
float result = 0.0 ;
56
35
for (int i = 0 ; i < n; i++) {
57
36
if (a[i].mount <= need) {
You can’t perform that action at this time.
0 commit comments