1 条题解

  • 0
    @ 2026-4-1 14:57:08

    B. 烟花 详细题解

    题目核心理解

    两台烟花装置同时启动:

    • 第一台每隔 aa 分钟发射一发,发射时刻为 a,2a,3a,a,2a,3a,\dots
    • 第二台每隔 bb 分钟发射一发,发射时刻为 b,2b,3b,b,2b,3b,\dots

    每发烟花发射后会持续可见 m+1m+1 分钟,即某发在时刻 xx 发射,则在 [x,x+m][x,\,x+m] 分钟内均可见。

    求:同一时刻天空中最多能同时看到多少发烟花


    核心思路

    1. 关键构造时刻

    T=LCM(a,b)T = \operatorname{LCM}(a,b),即 a,ba,b 的最小公倍数。 由最小公倍数性质:

    • T>0T>0
    • TT 同时被 aabb 整除

    因此在时刻 TT两台装置会同时各发射一发烟花,且每发都会持续到 T+mT+m 时刻才消失。

    2. 统计可见烟花数量

    观察时刻 T+mT+m 的天空:

    • 仍能看到时刻 TT 发射的两发烟花
    • 第一台在 [T,T+m][T,\,T+m] 内额外发射了 ma\left\lfloor\dfrac{m}{a}\right\rfloor
    • 第二台在 [T,T+m][T,\,T+m] 内额外发射了 mb\left\lfloor\dfrac{m}{b}\right\rfloor

    合计数量即为:

    $$\left\lfloor\frac{m}{a}\right\rfloor + \left\lfloor\frac{m}{b}\right\rfloor + 2 $$

    3. 证明这就是最大值

    单独看任意一台装置(以间隔 aa 为例):

    • 设最早消失的一发在时刻 xx 消失
    • 时刻 xx 可见的烟花发射时刻为:$$x,\ x+a,\ \dots,\ x+a\cdot\left\lfloor\frac{m}{a}\right\rfloor $$
    • 单台装置最多同时可见 ma+1\left\lfloor\dfrac{m}{a}\right\rfloor+1

    两台装置叠加,总数上界为:

    $$\left(\left\lfloor\frac{m}{a}\right\rfloor+1\right) + \left(\left\lfloor\frac{m}{b}\right\rfloor+1\right) = \left\lfloor\frac{m}{a}\right\rfloor + \left\lfloor\frac{m}{b}\right\rfloor + 2 $$

    因此上界可以取到,即为答案。


    算法流程

    1. 对每组输入 a,b,ma,b,m
    2. 计算 ma\left\lfloor\dfrac{m}{a}\right\rfloormb\left\lfloor\dfrac{m}{b}\right\rfloor
    3. 直接求和后加 22 输出

    公式与复杂度分析

    最终答案公式:

    $$ans = \left\lfloor\frac{m}{a}\right\rfloor + \left\lfloor\frac{m}{b}\right\rfloor + 2 $$

    复杂度

    每组测试用例仅做整数除法与加法。 时间复杂度:O(1)O(1)。 可轻松处理 a,b,m1018a,b,m \le 10^{18}、测试用例数 t104t \le 10^4 的数据范围。

    • 1

    信息

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