CF1955A 题解

· · 题解

题目分析

题目描述了一个购买酸奶的场景,商店提供两种购买方式:单独购买一瓶酸奶和促销组合购买两瓶酸奶。我们需要编写一个程序来计算以最小的花费购买给定数量的酸奶。

对于给定的情况,我们可以通过比较单独购买和促销组合购买的价格来决定购买方式。如果促销组合购买的价格更便宜,我们就尽可能多地选择促销组合购买酸奶;否则,我们就采用单独购买的方式。最后将花费累加起来即可得到最小花费。

思路

这个问题的思路相对简单,主要是通过比较正常价和促销价来决定购买的方式。

  1. 首先,我们需要判断在当前的价格情况下,是购买单独一瓶酸奶还是两瓶酸奶的促销组合更划算。
  2. 如果促销组合更划算,我们尽可能多地购买促销组合,然后再考虑是否需要单独购买一瓶酸奶。
  3. 如果单独购买一瓶酸奶更划算,我们直接购买单独的酸奶即可。

这个思路比较直观,基于贪心的原则,每次都选择当前最划算的购买方式。在实现时,我们只需要比较一下促销价和两倍的单独购买价的大小关系,然后做出相应的购买决策即可。

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;
}