【2018 CodeM】资格赛---下单

0 篇文章 0 订阅

前言

这道题目应该算签到题了吧(我大概扫了一下,感觉这道题目应该是最简单的 ^_^)

注:如果您现在还没有AC,并且比赛还没有结束,我建议再想想,认真再重新读下题目描述,或许你就会发现原来是自己想复杂了(不管你是不是这样的情形,反正我当时是这样的,哈哈)

题目描述

[编程|1000分] 下单

时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++ 262144K,其他语言 524288K

题目链接 — 牛客网

题目描述

美团在吃喝玩乐等很多方面都给大家提供了便利。最近又增加了一项新业务:小象生鲜。这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机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

题目分析

最开始拿到这道题目,读了下题目,题意应该是很容易读懂的,毕竟这样的场景在现实生活中经常出现嘛(感觉这道题目命的很不错呀 ^_^)

咋一看,我们如何进行选取哪些物品进行优惠?脑袋马上就闪出DP(假装心中一万个DP)。

然后就开始认真做题了(傻了吧唧的)

做了一半,发现这题是真的难(自己太菜就太菜,还怪题目难,哼,就是这么不讲理)

想了下,真的难,难道是我题目理解错误了?(好像开窍了)

好吧,让我们来画重点了。

美团在吃喝玩乐等很多方面都给大家提供了便利。最近又增加了一项新业务:小象生鲜。这是新零售超市,你既可以在线下超市门店选购生鲜食品,也可以在手机App上下单,最快30分钟就配送到家。
新店开张免不了大优惠。我们要在小象生鲜超市里采购n个物品,每个物品价格为ai,有一些物品可以选择八折优惠(称为特价优惠)。
有m种满减优惠方式,满减优惠方式只有在所有物品都不选择特价优惠时才能使用,且最多只可以选择最多一款。
每种满减优惠描述为(bi,ci),即满bi减ci(当消费>=bi时优惠ci)。
求要买齐这n个物品(必须一单买齐),至少需要多少钱(保留两位小数)。

注意我标注的重点,然后再想想应该明白了

只能使用一种满减,并且只能一单买完(我就是最开始以为可以使用多种满减方案,发现这道题目是真的难)

AC代码

#include <bits/stdc++.h>
using namespace std;
int a[11][2];
int bc[11][2];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>a[i][0]>>a[i][1];
    }
    for(int i=0;i<m;i++){
        cin>>bc[i][0]>>bc[i][1];
    }
    double res = 0;     //结果
    double temp = 0;       //商品总额
    for(int i=0;i<n;i++){
        temp += a[i][0];
        if(a[i][1]){
            res += a[i][0] * 0.8;
        } else {
            res += a[i][0];
        }
    }
    for(int i=0;i<m;i++){       //遍历选择最优的满减
        if(temp >= bc[i][0]){
            if(temp-bc[i][1] < res){
                res = temp-bc[i][1];
            }
        }
    }
    cout<<setiosflags(ios::fixed)<<setprecision(2)<<res<<endl;
    return 0;
}

注: 如有错误之处,还望指正,谢谢。欢迎dalao留言评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
插件实现Java代码高亮显示,可以按照以下步骤进行操作: 以下是一个Vue组件的示例,其中包含一个1. 安装vue-codemirror插件和codemirror插件: ```shell npm install vue-codemirror --save npm install codCodemirror编辑器和一个按钮,点击按钮将编辑器中的内容emirror --save ```发送到后端进行处理: ```html <template> <div> <codemirror ref="codeMirrorEditor" :value="code 2. 在main.js中引入vue-codemirror插件和codemirror插件: ```javascript import" : Vue fromoptions="{ theme: 'vue' import VueCodeMirror from ' 'base16vue-codem-dark' }irror' import" @changes 'codem="onChange"></irror/lib/ccodemirrorodemirror.css> <' import 'button @clickcodemirror="sendData/mode/cl">发送数据ike/clike</button> .js' Vue </div.use(Vue> </templateCodeMirror) ```> <script> import axios from 'axios' import 'codemirror/lib/codemirror.css' import 'codem 3. 在需要使用vue-codemirror的组件中,使用vue-codemirror标签,并设置mode属性为clirror/theme/base16-dark.css' import VueCodemirrorike,即可实现Java代码高亮显示: ```html from< 'vuetemplate> -codemirror' export default <div> { components <vue: { -codemirror codemirror v-model=": VueCodcode" :emirror.codoptions="cmemirror Options" mode }, ="clike data() { "></vue-codemirror> return { </div code:> </template '' } > <script> }, export default { methods: { data() { return onChange() { code { this: '', .code = this cmOptions:.$refs.code { tabMirrorEditor.getCodeSize: 4, () }, styleActiveLine sendData() { axios: true, .post('/api lineNumbers/data', {: true, line: data: this true, .code }) theme: ' .then(responseidea' => { } } console.log(response.data) }) .catch(error => { } } </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值