美团 · 基础数学 · 算法编程题
美团 基础数学 n ≤ 1e5 时限 1 秒 / 256 MB

题目描述

小美正在设计美团外卖的定价信息。已知外卖定价的规则如下:
1. 每道菜有折扣价和原价。折扣价不能超过原价。
2. 订单有满 x 元减 y 元的优惠。当购买的菜的价格总和不小于 x 元时,总价格可以减 y 元。“减”的价格不能超过“满”的价格。
3. 满减优惠和折扣价是互斥的,当且仅当每个菜都选择了原价才可以触发满减。
4. 系统会自动为客户计算最低价格的方案。
在设计定价时,原价、折扣价和满减的价格都必须是正实数。如果设计的定价发生问题,则会提示数据错误。
请使用等价划分法设计测试用例,来测试该系统的功能。

输入输出

输入描述
第一行输入一个正整数 n ,代表菜的总数。
接下来的 n 行,每行输入两个实数 a_i 和 b_i ,代表每道菜的原价是 a_i ,折扣价是 b_i 。
最后一行输入两个实数 x 和 y ,代表满 x 元可以减 y 元。
1≤ n ≤ 10^5
数据中所有实数的绝对值不超过1000。
输出描述
如果数据有误,则输出一行字符串"error"。
否则输出一个小数,小数点后保留2位即可。该小数代表顾客购买了全部菜各一份时,订单的总价格。

样例共 3 组

样例 1 · 虽然触发了满15元减3元,但使用折扣只需要花12元,低于使用满减的价格(20-3=17),因此最终系统会为客户推荐折扣价。
输入
2
10 5.5
10 6.5
15 3
输出
12.00
样例 2 · 触发满20元减10元即可。满减价优于折扣价。
输入
2
10 5.5
10 6.5
20 10
输出
10.00
样例 3 · 折扣价高于原价,数据错误。
输入
2
10 10.25
10 3.5
20 4.5
输出
error

算法解析依据充分

考点:基础数学

数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 数据规模:n ≤ 1e5
  • 复杂度门槛:只允许 O(n log n) 及更优,朴素 O(n²) 会超时。
  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:基础数学

本题切入点

这是一道「定价规则校验」题:先逐条检查折扣价不超过原价、满减金额不超过门槛等约束,非法则输出 error;合法则用 min(全原价−满减, 折扣价合计) 计算最低价。

把题目转化为数学表达式,用公式或性质直接求值。

思路框架(基础数学 通法 · 非本题专属)

  1. 先写出题目要求的数学表达式或所求量的定义。
  2. 利用代数变形、不等式、函数单调性等性质化简。
  3. 按题面给的精度要求输出(浮点题注意误差)。
  4. 数据范围大时,往往存在 O(1) 或 O(log n) 的数学解,不必模拟。

实现要点:浮点输出通常要求相对误差不超过 1e-7,注意用 double/long double 或高精度小数。

复杂度:时间 O(1) ~ O(log n) | 空间 O(1)

该范式的通法易错点

  • 整数除法丢精度;浮点比较直接用 == 。
  • 题目要求「相对误差」而非「绝对误差」,输出格式没对齐。

对照本题

  • 数据规模 n ≤ 1e5,只允许 O(n log n) 及更优,朴素 O(n²) 会超时。

样例解读

样例 1:输入 2 / 10 5.5 / 10 6.5 / 15 3 → 输出 12.00

虽然触发了满15元减3元,但使用折扣只需要花12元,低于使用满减的价格(20-3=17),因此最终系统会为客户推荐折扣价。

样例 2:输入 2 / 10 5.5 / 10 6.5 / 20 10 → 输出 10.00

触发满20元减10元即可。满减价优于折扣价。

样例 3:输入 2 / 10 10.25 / 10 3.5 / 20 4.5 → 输出 error

折扣价高于原价,数据错误。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2023年美团秋招编程岗第一批笔试。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解