
CDQ分治
文章平均质量分 58
CR1SceNT
这个作者很懒,什么都没留下…
展开
-
BZOJ3262: 陌上花开
BZOJ3262先按第一维排序,然后以第二维为序做CDQ分治,第三维用树状数组维护。 先考虑没有相同属性的花,即任意两朵花A,B之间不存在相互包含关系。 那么正常做就好了。 再考虑加入相同属性的花对答案有什么影响。 那么若A>BA>B,对AA的贡献应为numBnum_B,numinum_i表示第ii种花的个数。 那么对于同一个集合内的相同的花,每一个的答案应+=numi−1+=num_i-原创 2017-05-23 19:37:02 · 474 阅读 · 0 评论 -
BZOJ2683: 简单题
BZOJ2683传送门 BZOJ1176几乎一样啊 戳这里–>BZOJ1176然后这个题 应 该? 要开long long 吧。 (日常打错变量名QAQ。。)【代码】#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <queue> #include <cmath> #de原创 2017-05-23 20:00:05 · 375 阅读 · 0 评论 -
BZOJ3295: [Cqoi2011]动态逆序对
BZOJ3295删除好像挺麻烦的。。那就考虑倒一下,也就是倒序加值。 考虑一个值加入进来,对答案的影响就是,它左边的比它大的个数和它右边比它小的个数加和。 先只考虑一半。只考虑右边比它小的数的个数。那么假设当前加入的为一个三元组 (t,pos,x)(t,pos,x),表示时间,位置和值。那么就是求满足(tt<t,ppos>pos,xx<x)(tt<t,ppos>pos,xx<x)的三元组(tt原创 2017-05-24 11:50:35 · 295 阅读 · 0 评论 -
BZOJ1935: [Shoi2007]Tree 园丁的烦恼
BZOJ1935传送门1176,22831176,2283三倍EXPEXP。 戳这里–>BZOJ2283【代码】#include <cstdio> #include <iostream> #include <algorithm> #define N 500005 #define M 10000005 using namespace std; typedef long long ll; int r原创 2017-05-24 12:12:46 · 689 阅读 · 0 评论 -
BZOJ4170: 极光
BZOJ4170对于graze(x,y)=|x−y|+|a[x]−a[y]|<=kgraze(x,y)=|x-y|+|a[x]-a[y]|<=k 将位置看做xx坐标,aa值看做yy坐标。就是求和某个点的曼哈顿距离小于等于kk的点数个数。 发现这个范围是一个菱形。将坐标系旋转一下。(x,y)(x,y)变成(x−y,x+y)(x-y,x+y),从曼哈顿距离变成切比雪夫距离。也就变成了求某个正方形内点原创 2017-06-16 09:57:42 · 639 阅读 · 0 评论 -
BZOJ1176: [Balkan2007]Mokia
BZOJ1176算得上是CDQ分治三维偏序的模板题了吧QAQ。 我们就把查询操作容斥一下,就变成了求sum(1,1,x2,y2)−sum(1,1,x1−1,y2)−sum(1,1,x2,y1−1)+sum(1,1,x1−1,y1−1)sum(1,1,x2,y2)-sum(1,1,x1-1,y2)-sum(1,1,x2,y1-1)+sum(1,1,x1-1,y1-1) 那么相当于我们只需要维护一个原创 2017-05-23 16:48:39 · 725 阅读 · 0 评论