1 条题解
-
0
📝 题目大意
给定两种购买苹果的方式:支付 日元买 个苹果,或支付 日元买 个苹果。求恰好获得 个苹果所需的最小金额。
💡 解题思路
- 题目分析:数据范围 非常小,允许直接枚举。约束 表明单次买 个的价格至少不低于单次买 个的价格,但 和 的大小关系不确定(即批量购买可能更便宜也可能更贵)。
- 算法推导:枚举购买 个苹果的操作次数 (),则剩余 个苹果全部用单买方式补齐。总花费为 。在所有 中取最小值即可。初始值设为全部单买的情况 。
- 边界与细节:
- 当 时,循环只执行 一次,此时 ,正确。
- 当 时(批量买更贵),最优解就是全单买,枚举也会覆盖。
- 注意 不一定能被 整除,剩余部分用单买补齐。
⏱️ 复杂度分析
- 时间复杂度:,实际枚举次数为 。
- 空间复杂度:,仅使用常数个变量。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main(){ int x, y, n; cin >> x >> y >> n; // 初始化答案为全部单买的情况 int ans = n * x; // 枚举购买 3 个苹果的操作次数 k for(int k = 0; k <= n / 3; k++){ int a = n - 3 * k; // 剩余用单买补齐的苹果数 int b = k * y + a * x; // 当前方案的总花费 ans = min(ans, b); // 取最小值 } cout << ans; return 0; }
- 1
信息
- ID
- 624
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者