给定一个包含N个数字的数组A(全为正数且包含小于或等于 4 位数字),将支持2种类型的查询。总共有 M 个查询。
- 用K更新由索引L,R(包括两者)给出的范围。
- 返回L,R(包括两者)给定范围内的最大元素。
将数字更新K次意味着将数字旋转K次。
例如 1234 旋转成 2341
905转成059,059转成590。
注意:059 和 59 是不同的数字。59 转为 95。
给定的数组元素没有前导零。
约束:
0 <= Ai < 10000
1 <= N <= 800000
1 <= M <= 200000
0 <= K <= 60
我想到了一个分段树,其中树节点存储它们包含的范围的旋转次数。我用惰性传播实现了这一点,但也使用惰性传播,我的查询实现在最坏的情况下需要 O(N) 时间,这会导致 TIME LIMIT EXCEEDED。
任何人都可以提出更快的方法吗?
我是否缺少数组或结构的某些属性?