题解

cookiebus 2023-10-03 6:37:12 12 返回题目

把所有的倍数取个对数, 就可以直接相加了,避免了乘法爆longlong的问题。 首先预处理dp[l][r][t]表示从l出发,到r停下来,走不超过2^t步的最大值,然后对于一次询问s,k来说,就可以直接二分然后合并这个dp数组了。 注意合并的时候其实只需要n^2的代价就可以了,因为只关心从s出发的答案。

30分留给没想到取对数的

60分是留给二分+n^3合并的

80分是留给二分套n^2logn合并的

{{ vote && vote.total.up }}