一样是cdq的板子 照着 "园丁的烦恼" 就好了 代码 cpp include include include using namespace std; int w,cntq,cnta,nothing,type,qid,aid; namespace BIT{ int bit[2000100]; in ...
分类:
其他好文 时间:
2018-12-14 19:33:39
阅读次数:
134
CDQ分治小结 warning:此文仅用博主复习使用,初学者看的话后果自负。。 复习的时候才发现以前根本就没写过这种东西的总结,简单的扯一扯 cdq分治的经典应用就是解决偏序问题 比如最经典的三维偏序问题 给出$n$个数,每个数$i$,有三个属性$a_i, b_i, c_i$,现在我们要统计对于每个 ...
分类:
其他好文 时间:
2018-12-13 01:24:45
阅读次数:
244
思路
听说可以CDQ分治,然后我不会,所以我写树套树
首先肯定先按照a拍个序。然后就成了在b,c这两个数组中查询了。用一个树状数组 ...
分类:
其他好文 时间:
2018-12-11 16:00:54
阅读次数:
219
"传送门" 这道题其实我一开始直接的反应是分块……不过听说这是CDQ分治练习题。 看到这种删除的题……一般就会想到先全删光之后整回去。对于每次添加,我们要统计的就是添加在它之前的,位置在它之前的,比他大的,和添加在它之前的,位置在它之后的,比他小的。 形象地说,对于每一个操作i,给定三个值$tim$ ...
分类:
其他好文 时间:
2018-12-08 22:33:17
阅读次数:
157
传送门 CDQ分治是一个神奇的东西……说实话我觉得看它的讲义我是真的看不懂。感觉好像分治类的算法都这样,就是讲义讲不明白,得多做题才能慢慢理解。 毕竟因为分治的题主要是不知道怎么实现……得具体题目具体分析。 CDQ分治的精华我觉得是在于,他能通过“修改独立,允许离线”,转化为将序列分为两份,其中保证 ...
分类:
其他好文 时间:
2018-12-08 21:18:25
阅读次数:
129
题目传送门 题目大意: 二维平面上有q次操作,每次操作可以是添加一个点,也可以是添加一个矩形,问每次操作后,有多少 点-矩形 这样的pair,pair的条件是点被矩形覆盖(边缘覆盖也算)。 思路: cdq分治,由于加点和加矩形都既是修改操作又是查询操作,而且两种方式完全不一样,所以用两部分cdq来写 ...
分类:
其他好文 时间:
2018-12-04 19:00:25
阅读次数:
189
"嘟嘟嘟" "双倍经验" 这道题只要想明白了就和$cdq$分治的板儿没什么区别了,然而如果想不明白就会像我一样磨叽了一晚上。 删数不好办,于是离线倒序改成加数。 考虑加上一个数$a_i$形成的逆序对:1.在他前面且比他大的。2.在他后面且比他小的。 因为数字是动态添加的,所以上述的数必须是在他之前添 ...
分类:
其他好文 时间:
2018-11-30 14:14:23
阅读次数:
143
"嘟嘟嘟" 很显然我开始学$CDQ$分治了。 我刚开始学的时候看了一篇博客,上面全是一些抽象的概念,看完后真是一头雾水,最后还不得不抄了这题的代码。 但这样可不行呀…… 于是我就不打算再扣那篇博客,而是自己想,最后真的自己想明白了。 (个人感觉这道题跟$CDQ$分治关系不大) 首先想一下二维偏序:我 ...
分类:
其他好文 时间:
2018-11-29 15:07:56
阅读次数:
194
前置技能:归并排序,树状数组。 cdq分治主要是用来离线解决一些奇怪的问题的。可以用来代替一些高级数据结构比如树套树或者KD-Tree之类的。。。 话说挑战2上的KD-Tree我到现在还没开始学。。。 cdq遇到在线的好像就死掉了?(雾 目前在博主的能力范围内: 主要用来解决多维(三维)偏序问题。 ...
分类:
其他好文 时间:
2018-11-28 01:10:24
阅读次数:
194
既然选择要继续,就要继续努力辣 距离WC的时间也不多了,先复习和学习一波算法 数据结构 主席树[] 线段树合并[] CDQ分治[] 线段树分治[] 虚树[] 可持久化01trie[] 整体二分 KD tree[] 点分治[] splay[] LCT[] dsu[] 长链剖分[] 左偏树[] 算法 模 ...
分类:
其他好文 时间:
2018-11-24 11:45:20
阅读次数:
253