1 条题解

  • 0
    @ 2026-4-12 22:28:22

    B. 新面包店 详细题解(对标官方标程)

    一、核心推导逻辑

    如果 b<a\boldsymbol{b < a},那么答案显然等于 an\boldsymbol{a \cdot n}。 否则,当 k=min(ba+1, n)\boldsymbol{k = \min(b-a+1,\ n)} 时,利润能达到最大。

    原因很简单:

    • 如果取更大的 kk,鲍勃就会以低于 aa 的价格卖面包,不划算;
    • 如果取更小的 kk,本来能卖更高价格的面包,却按原价卖,利润变少。

    我们知道等差数列求和公式:

    $$a + (a+1) + \dots + (b-1) + b = \frac{a+b}{2} \cdot (b-a+1) $$

    最终答案公式为:

    b+(bk+1)2k+(nk)a\frac{b + (b-k+1)}{2} \cdot k + (n-k) \cdot a

    二、标程完整思路

    1. ba\boldsymbol{b \le a} 促销价不如原价高,直接全部按原价卖。 答案:

      ans=naans = n \cdot a
    2. b>a\boldsymbol{b > a} 最优促销数量 kk 取:

      k=min(ba+1, n)k = \min(b-a+1,\ n)

      总利润 = 促销 kk 个的收入 + 剩余 (nk)(n-k) 个原价收入

      $$ans = \frac{b + (b-k+1)}{2} \cdot k + (n-k) \cdot a $$

    三、标程代码说明

    标程使用等价简化公式计算,结果完全一致:

    $$ans = (b - k + 1) \cdot n + \frac{k \cdot (k-1)}{2} $$

    其中

    k=min(ba+1, n)k = \min(b - a + 1,\ n)

    代码使用 long long 避免溢出,完全适配 10910^9 范围。

    • 1

    信息

    ID
    6462
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者