@ACdreamer

ODT,是一种算法。在一些题中,序列往往能被分成若干个部分,这些部分可以批量搞。

比如区间覆盖;区间排序;区间cxc^x,就是这一段数a都要变成 ax1x2x...a^{x_1^{x_2^{x...}}}

一般会使用平衡树或线段树来维护这些区间

只要你不暴力for每个区间或O(区间长度),ODT是复杂度正确的,这很好证明。(ODT并不是暴力数据结构,请一定要推广复杂度正确的ODT!

但是如果你暴力for了,不随机的话复杂度一定错误(随机复杂度证明如下:http://codeforces.com/blog/entry/56135?#comment-398940

所以请不要推荐复杂度错误的ODT,复杂度错误的ODT请只将它作为一种骗分方法进行说明。

但是对于你的题,可以使用线段树辅助维护。这样就可以转为复杂度正确且码量还是很小。

2018/10/14 17:06
11751