原题链接
全过程
注意到 $ 1 \le n, m \le 10^5 $,区间修改,区间查询,考虑线段树维护区间和,update时通过暴力修改开根号。
然后非常精准的拿到30分。
发现单次区间修改的时间复杂度已经达到 $ O(n \ log \ n) $,严重超时。
试图打懒标记无果,遂阅读题解。
然后发现由于数列中的数 $ \le 10^{12} $,暴力开根号,每个数最多修改6次就会达到1,之后 $ \sqrt{1} = 1 $,可以大大减少无效修改。让线段树再维护区间最大值,若最大值为1则跳过区间修改。
这样代码会显得没那么暴力。
AC Code