• 美团点评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 }
  • 相关阅读:
    SQL语句集(转)
    Oracle 数据库 for update / for update nowait 的区别
    XML 关键字
    JAVA 操作 DBF 文件数据库
    Hibernate 懒加载和 Json 序列化冲突
    MYSQL 语法大全自己总结的
    php-laravel中间件使用
    php-表单验证
    php-laravel安装与使用
    iOS 关于权限设置的问题
  • 原文地址:https://www.cnblogs.com/dapeng-bupt/p/9101360.html
Copyright © 2020-2023  润新知