上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 83 下一页
摘要: 某谷链接 发一篇博客记录一下主席树板子。 别忘了输出原数组中的元素,而不是离散化后的。 #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<cstdlib 阅读全文
posted @ 2018-12-04 16:57 mrclr 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 嗯。 splay维护哈希。 如题,用splay维护哈希,查找的时候二分。所以复杂度是取决于询问复杂度:\(O(n \log^ 2{n})\)。 这道题还有一个技巧,就是一个节点记录的是他的子树的哈希值,所以树的的形态改变的同时,每一个节点记录的哈希值也在改变。在pushup的时候,应该这么写 阅读全文
posted @ 2018-12-04 15:49 mrclr 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 突然觉得splay挺有意思的…… 这道题只有一个任务:区间翻转。 首先应该知道的是,splay和线段树一样,都可以打标记,然后走到每一个节点之前先下传。 那怎么打标记呢?还应该有“区间”的思想。 对于区间$[L, R]$,想办法把这个区间所在的子树提取出来,然后打个标记即可。 那怎么提取呢? 阅读全文
posted @ 2018-12-03 20:10 mrclr 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 splay++…… 这真是一道好题…… 刚开始我困扰了好久,因为前几道题都是以权值为关键字建树的,但是这题显然不是。 后来才知道这题是以位置为关键字,即对于当前节点$now$,$now$的左子树表示位置在$now$之前的,右子树表示位置在$now$之后的,即左子树的大小$+$$1$就是节点$ 阅读全文
posted @ 2018-12-03 19:29 mrclr 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 突然觉得splay挺有意思,唯一不足的是这几天是一天一道,debug到崩溃。 做了几道平衡树基础题后,对这题有莫名的自信,还算愉快的敲完了代码后,发现样例都过不去,然后就陷入了无限的debug环节了……算了,伤心的事就别再提了。 说一下这题怎么做: 1.插入 不说了 void insert( 阅读全文
posted @ 2018-12-03 10:25 mrclr 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 $splay$我又来了 1.插入结点:正常操作,不说了。 1.全局加减:单开一个变量表示变化量即可,不用区间修改打$lazy$标记。 2.删除小于$x$的数:找$x$的后继(包括自己),然后把$x$旋到根,删除左子树即可。 3.查询第$k$大的数:如果$k$小于右子树大小,到右子树去找;否则 阅读全文
posted @ 2018-12-02 19:35 mrclr 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 看完题,思路一秒就出来了:建两棵平衡树,分别维护宠物和领养者。然后就是正常的插入,找前驱后继,删除操作了。 然后旁边的lba巨佬说只用建一棵就行,如果宠物多了就维护宠物,否则维护领养者。 总而言之这就是一道板儿题。 然而我刚学$splay$啊! 于是一上午就这么过去了。 旋转,插入,找前驱后 阅读全文
posted @ 2018-12-01 13:02 mrclr 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这几天开始搞平衡树了,$splay$理解起来感觉还行,然而代码看了半天才勉强看懂。 我这篇博客应该不算什么入门讲解,因为我觉得我讲不明白,所以只能算自己的学习笔记吧。 这道题就是有$n$个数,定义$f_i = min{|a_i - a_j|}, 1 \leqslant j < i$,其中$f 阅读全文
posted @ 2018-11-30 20:33 mrclr 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 我的做法是$cdq$分治。(因为不会$k-d \ \ tree$啊) 假设她站在点$(x_0, y_0)\(,且对于任意的埋藏点\)(x_i, y_i)$都满足$x_i \leqslant x_0, y_i \leqslant y_0$。则距离就可以化简为$(x_0 - x_i) + (y_ 阅读全文
posted @ 2018-11-30 13:41 mrclr 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 双倍经验 这道题只要想明白了就和$cdq$分治的板儿没什么区别了,然而如果想不明白就会像我一样磨叽了一晚上。 删数不好办,于是离线倒序改成加数。 考虑加上一个数$a_i$形成的逆序对:1.在他前面且比他大的。2.在他后面且比他小的。 因为数字是动态添加的,所以上述的数必须是在他之前添加的! 阅读全文
posted @ 2018-11-30 11:29 mrclr 阅读(209) 评论(0) 推荐(1) 编辑
上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 83 下一页