CDQ算法
Π鱼星先生
这个作者很懒,什么都没留下…
展开
-
【三维cdq】P3810 【模板】三维偏序(陌上花开)
三维偏序cdq:题目中明显说了,三个维度(a, b, c) 题目链接 这里有必要说明,在一些二维cdq的题目中有题中指定的操作的时间作为第一个维度,这是容易看的,因为对于操作对于后续操作的影响必定要让时间早的操作优先执行,这样才能够保证方法的准确性,相当于弱化了第一个维度存在的含义。但是这里就是要把第一个维度与其他维度等价考虑。 这个题目有细节地方的考虑,下面再说,这边先说概括性的思路。 有三个维度,我们知道cdq函数在递归调用返回之后,左边一半的区间和右边一半的区间需要有一个维度是所有的右值都大于(小于也原创 2020-08-23 10:12:05 · 221 阅读 · 0 评论 -
【二维cdq】P3374 【模板】树状数组 1
P3374 【模板】树状数组 1 题目链接 这道题的特殊处理方法:因为查询是对于区间的, 那么我们把一个查询操作转换为两个前缀和的查询, 只不过这两个查询的系数不同, 右值的前缀和是1 左值的前缀和是-1, 这样应用在答案上得到时候就是相当于前缀和做的区间查询。 对于操作的记录主要有两个维度, 第一个是修改的时间;第二个是修改的位置和值, 那么做法是我们函数中任何时候基于时间维度排序, 因为cdq是递归的, 那么在递归回来之后我们要保证左边一半的时间维度全部比右边一半的时间维度小, 那么也就是让左边的所有点原创 2020-08-23 09:45:40 · 124 阅读 · 0 评论