
CDQ分治
YihAN_Z
ただのあほです
展开
-
BZOJ 1176 && BZOJ 2683 CDQ分治
双倍经验题…放到一起了CDQ分治也叫做时间分治。即把操作序列按照一定的顺序排序之后以时间为界进行分治。算法过程1.递归处理左、右区间内部修改对询问的影响。 2.处理左区间修改对右区间询问的影响。 (因为不理解这里看了好久…) 这样做可以保证每一个询问之前的修改都会影响到它的答案。比如这道题题目大意:给定一个n*n的矩阵(初始全0),有以下操作: 1.把(x,y)处加上z 2.询问(x1,y原创 2017-01-05 17:11:45 · 455 阅读 · 0 评论 -
BZOJ 3262 陌上花开 树套树 (CDQ分治)
题目大意:有n个三元组(a,b,c)。定义一个三元组A大于另一个三元组B当且仅当A的三个元素都不小于B的三个元素.统计出大于(0~n-1)个三元组的数量。有三个元素,首先用排序把a弄掉,对于(b,c)两个元素可以看做是平面上的点,利用树套树第一维树状数组,第二维Treap可以解决查找平面上在一个点左下方的点的个数。当然也可以用CDQ分治来解决,要比树套树快很多(然而我就是喜欢树套树)#include原创 2017-02-27 19:07:30 · 374 阅读 · 0 评论 -
BZOJ 3295 动态逆序对 CDQ分治
#include <cstdio>#include <algorithm>#define N 100005#define INF (1<<30)using namespace std;typedef long long LL;inline int lowbit(int x) { return x & -x; }struct Data { int x,y,t; bool原创 2017-07-04 19:22:18 · 489 阅读 · 0 评论