1 条题解
-
0
B. 烟花 详细题解
题目核心理解
两台烟花装置同时启动:
- 第一台每隔 分钟发射一发,发射时刻为
- 第二台每隔 分钟发射一发,发射时刻为
每发烟花发射后会持续可见 分钟,即某发在时刻 发射,则在 分钟内均可见。
求:同一时刻天空中最多能同时看到多少发烟花。
核心思路
1. 关键构造时刻
取 ,即 的最小公倍数。 由最小公倍数性质:
- 同时被 和 整除
因此在时刻 ,两台装置会同时各发射一发烟花,且每发都会持续到 时刻才消失。
2. 统计可见烟花数量
观察时刻 的天空:
- 仍能看到时刻 发射的两发烟花
- 第一台在 内额外发射了 发
- 第二台在 内额外发射了 发
合计数量即为:
$$\left\lfloor\frac{m}{a}\right\rfloor + \left\lfloor\frac{m}{b}\right\rfloor + 2 $$3. 证明这就是最大值
单独看任意一台装置(以间隔 为例):
- 设最早消失的一发在时刻 消失
- 时刻 可见的烟花发射时刻为:$$x,\ x+a,\ \dots,\ x+a\cdot\left\lfloor\frac{m}{a}\right\rfloor $$
- 单台装置最多同时可见 发
两台装置叠加,总数上界为:
$$\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 $$因此上界可以取到,即为答案。
算法流程
- 对每组输入
- 计算 和
- 直接求和后加 输出
公式与复杂度分析
最终答案公式:
$$ans = \left\lfloor\frac{m}{a}\right\rfloor + \left\lfloor\frac{m}{b}\right\rfloor + 2 $$复杂度
每组测试用例仅做整数除法与加法。 时间复杂度:。 可轻松处理 、测试用例数 的数据范围。
- 1
信息
- ID
- 6205
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者