cdq分治
EMber _
人但有追求,世界亦会让路。
展开
-
bzoj3262陌上花开 cdq分治 三维偏序
cdq分治的入门题目,学习一下这个很实用的玩意儿。 大概思想就是把在线变为离线,去掉时间的限制,然后每次对于询问区间分治处理,块内之间的影响可以递归处理,然后剩下的就是块与块之间的影响,这个其实就很简单了,随便搞搞就好,反正是静态查询,双指针啊啥的随便上。。 这题的话第一维排序,第二维cdq,第三维树状数组。 直接做就好啦。#include<cstdio>#include<algorithm原创 2017-07-24 16:35:18 · 274 阅读 · 0 评论 -
bzoj2683&&1176[Balkan2007]Mokia cdq分治
应该算是入门题,只不过我很久没做这种矩形题了,所以没有想到一个关键点导致我模型没转化过来。 还是像之前一样把询问和赋值多添加一个维,表示时间,然后添加很显然就不说了,每次直接bit加入就好,问题是查询。 一个子矩阵x1 y1 x2 y2 的答案等于ans[x2][y2]+ans[x1][y1]-ans[x1][y2]-ans[x2][y1] 注意一下边界就好了,然后直接cdq。 %GEOTC原创 2017-07-25 21:15:28 · 254 阅读 · 0 评论 -
bzoj3295[Cqoi2011]动态逆序对 cdq分治(树套树/主席树)
这题应该挺老了吧,好多人都切了,各种姿势都有,cdq分治是比较简单的一种,我就打了。。 跟普通的偏序不同,这里有一个删除的操作,那么我们其实可以把删除看作倒着插入,然后对被删除的哪一个数标记一下被删除的时间,然后对序列中的每一个数加上一维限制t,表示时间,那么明显对于未删除的,他们的时间按顺序递增,否则就从n递减,因为第一个删除就是最后一个插入。 然后就是三维偏序裸题了,注意一下要正反各扫1遍,原创 2017-07-24 20:54:44 · 288 阅读 · 0 评论