这道题挺有启发性的。
首先我们需要注意到一件事情,题目上说保证答案不超过 1018,而在题目中说对 b 数组是连乘,因为即使是 2,只需要累乘 60 次就可以超过 1018,所以我们断然 b 数组中比 1 大的元素不会很多。
于是想到一种暴力,用一个 set 存储 b 中所有比 1 大的位置,在查询操作中每次二分找到 b 在当前左端点右边的第一个比 1 大的位置,特判掉边界以后,在这段区间中选择 a 数组一定更优,对于这个位置,只需要比较一下是选 a 还是选 b 即可。
set
对 a 区间加法的时候用树状数组什么的搞一下就可以了。
AC记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】