【发布时间】:2014-10-02 19:38:37
【问题描述】:
给定一个数组 A,其中有 N 个数字(全为正数且包含小于 或等于 4 位),支持 2 种查询。那里 总共有 M 个查询。
- 通过K更新由索引L,R(包括两者)给出的范围。
- 返回 L,R(包括两者)给定范围内的最大元素。
更新数字 K 次意味着旋转数字 K 次。
例如1234转成2341
905转成059,059转成590。
注意:059 和 59 是不同的数字。 59转95。
给定的数组元素没有前导零。
约束:
0 艾
1 N
1 M
0 K
我想到了一个分段树,其中树节点存储它们包含的范围的旋转次数。我使用惰性传播实现了这一点,但也使用惰性传播,我的查询实现在最坏的情况下需要 O(N) 时间,这会导致 TIME LIMIT EXCEEDED。
谁能提出一个更快的方法?
我是否缺少数组或结构的某些属性?
【问题讨论】:
-
问题在哪里?
-
为什么要删除问题?
标签: algorithm data-structures segment-tree lazy-propagation