美團點評2018 CodeM資格賽


 

題目一:

美團在吃喝玩樂等很多方面都給大家提供了便利。最近又增加了一項新業務:小象生鮮。這是新零售超市,你既可以在線下超市門店選購生鮮食品,也可以在手機App上下單,最快30分鍾就配送到家。
新店開張免不了大優惠。我們要在小象生鮮超市里采購n個物品,每個物品價格為ai,有一些物品可以選擇八折優惠(稱為特價優惠)。
有m種滿減優惠方式,滿減優惠方式只有在所有物品都不選擇特價優惠時才能使用,且最多只可以選擇最多一款。
每種滿減優惠描述為(bi,ci),即滿bi減ci(當消費>=bi時優惠ci)。
求要買齊這n個物品(必須一單買齊),至少需要多少錢(保留兩位小數)。

輸入描述:

第一行,兩個整數n,m。
接下來n行,每行一個正整數ai,以及一個0/1表示是否可以選擇特價優惠(1表示可以)。
接下來m行,每行兩個正整數bi,ci,描述一款滿減優惠。
 
1 <= n,m <=10
1 <= ai <= 100
1 <= ci < bi <= 1000

輸出描述:

一行一個實數,表示至少需要消耗的錢數(保留恰好兩位小數)。
示例1

輸入

2 1
6 1
10 1
12 2

輸出

12.80
示例2

輸入

2 2
6 1
10 1
5 1
16 6

輸出

10.00

解答:逐個比較各個方案的錢數就可以

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<string>
 4 #include<vector>
 5 #include<queue>
 6 #include<unordered_map>
 7 #include<functional>
 8 #include<iomanip>
 9 using namespace std;
10 
11 int main() {
12 
13     int buy[10][2] = { 0 };
14     int discount[10][2] = { 0 };
15     int m, n;
16     cin >> n >> m;
17     for (int i = 0; i < n; i++)
18     {
19         cin >> buy[i][0];
20         cin >> buy[i][1];
21     }
22     for (int i = 0; i < m; i++)
23     {
24         cin >> discount[i][0];
25         cin >> discount[i][1];
26     }
27     double min = 99999999.0;
28     double res = 0.0;
29     int resNoDis = 0;
30     int all = 0;
31     //use discount
32     for (int i = 0; i < n; i++)
33     {
34         all += buy[i][0];
35         if (buy[i][1] == 1)
36             res += buy[i][0];
37         else
38             resNoDis += buy[i][0];
39     }
40     double temp = resNoDis + res * 0.8;
41     if (temp < min)
42         min = temp;
43     //use 滿減
44     for (int i = 0; i < m; i++)
45     {
46         if (all < discount[i][0])
47             continue;
48         temp = all - discount[i][1];
49         if (temp < min)
50             min = temp;
51     }
52     cout << setiosflags(ios::fixed) << setprecision(2)<<min;
53     system("pause");
54     return 0;
55 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM