
ACM_黑科技
文章平均质量分 81
逍遥丶綦
这个作者很懒,什么都没留下…
展开
-
可持久性数组 bzoj3674 可持久化并查集加强版
传送门:点击打开链接 题意: 强制在线操作,定义3种操作,查询两个点是否在同一集合,合并两个点,把状态恢复到之前的某个状态 思路:利用线段树实现的可持久性数组,其实原理上就是线段树,那么是如何实现可持久性数组的呢。 对于某次修改,就再造一颗线段树,但是这样明显效率和空间都会爆炸。 因为我们其实有很多节点都是上一次剩下的,其实我只需要新建新添加的那条链上的节点即可。其他节点只需要直接接在以前原创 2016-01-03 19:38:24 · 2149 阅读 · 0 评论 -
中位数求和 BUAA214 大新闻
传送门:点击打开链接 题意:给一个序列(n 思路:O(n^2logn)的方法太多太多了,这里我们思考如何用O(n^2)来做,说实话非常的巧妙 首先我枚举位置p为中位数,那么,我再创一个辅助数组,把位置p标记为0,把位置上的数比A[p]小的标记为-1,把位置上的数比A[p]大的标记为1,把位置上的数等于A[p]的且位置比p小的标记为-1,把位置比p大的标记为1 那么,假如原数列是1 2 3原创 2015-12-23 01:03:02 · 2139 阅读 · 0 评论 -
莫队算法 Codeforces617E XOR and Favorite Number
传送门:点击打开链接 题意:给n个数和一个k,有很多次查询,每次查询有l,r,求[l,r]有多少个子区间的xor之和等于k 思路:很明显是个裸莫队算法(原来在国外也烂大街 有几个要注意的地方,就是对于左端点操作的时候,实际上是操作L-1,以及vis和sum的更新顺序 还有就是记录数量的时候,vis数组至少要开109w,而不是100w,因为最后的异或可能把后面的0全部填满 区间的个数可能会原创 2016-01-31 21:18:35 · 1001 阅读 · 0 评论 -
线段树降空间复杂度,从O(4n)降到O(2n)
int ID(int l, int r) { return l + r | l != r; } 通常情况下,我们都是用rt来保存内容,然后左子树就是rt 我们仔细想一想,线段树的节点个数其实只有n个,但是为什么我们要开4n内存呢?很明显,有的节点内存并没有用上。 所以我们有么有一种方法,能直接把线段树所有的节点,恰好对应到n个连续空间上呢? 这个ID函数就做到了。有了这个ID函数原创 2016-05-15 00:31:53 · 3523 阅读 · 2 评论