信息
- ID
- 1596
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
先把 Y 更新为 min(Y,AX)、把 Z 更新为 min(Z,BX),这样两种大步操作都不会比相同增量的单步更差。
再交换两种大步,使 Y/A≤Z/B。若使用了至少 A 次长度为 B 的操作,就能把其中 A 次替换成 B 次长度为 A 的操作而不增加代价,因此只需枚举前者的次数 0,1,…,A−1;固定它后,最优方案会尽量使用长度为 A 的操作,其余用单步补齐。
当 ⌊N/A⌋<A 时,改为枚举长度为 A 的操作次数,并在固定它后尽量使用长度为 B 的操作。
两种枚举长度的较小者不超过 O(N),每组测试只需常数空间;所有乘积与答案均使用 64 位整数。