CF1955A 题解
题目分析
题目描述了一个购买酸奶的场景,商店提供两种购买方式:单独购买一瓶酸奶和促销组合购买两瓶酸奶。我们需要编写一个程序来计算以最小的花费购买给定数量的酸奶。
对于给定的情况,我们可以通过比较单独购买和促销组合购买的价格来决定购买方式。如果促销组合购买的价格更便宜,我们就尽可能多地选择促销组合购买酸奶;否则,我们就采用单独购买的方式。最后将花费累加起来即可得到最小花费。
思路
这个问题的思路相对简单,主要是通过比较正常价和促销价来决定购买的方式。
- 首先,我们需要判断在当前的价格情况下,是购买单独一瓶酸奶还是两瓶酸奶的促销组合更划算。
- 如果促销组合更划算,我们尽可能多地购买促销组合,然后再考虑是否需要单独购买一瓶酸奶。
- 如果单独购买一瓶酸奶更划算,我们直接购买单独的酸奶即可。
这个思路比较直观,基于贪心的原则,每次都选择当前最划算的购买方式。在实现时,我们只需要比较一下促销价和两倍的单独购买价的大小关系,然后做出相应的购买决策即可。
C++ 代码实现
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t; // 输入测试用例数量
while(t--)
{
int n,a,b;
cin >> n >> a >> b; // 输入酸奶数量,单独购买价格,促销组合购买价格
// 如果促销价比正常价划算,则尽可能多地使用促销价
if(b<a*2)
{
int c=n/2,d=n%2; // 计算促销组合购买的数量和单独购买的数量
cout << c*b+d*a << endl; // 输出最小花费
}
else
{
cout << n*a << endl; // 否则,直接单独购买
}
}
return 0;
}