神奇的解法
对于每个节点,建出权值线段树
每次查询右子树的权值线段树和左子树的权值线段树,左子树中比右子树小的有多少?右子树比左子树小的有多少?(分别对应不交换的逆序对和交换的逆序对)
将左子树和右子树的权值线段树合并
递归进行这个操作
感觉复杂度很不靠谱,于是想证明一下复杂度
最开始权值线段树共O(nlogn)个节点,最后共O(n)个节点
每次合并两棵树的每个节点都要访问一遍,所以...
分类:
其他好文 时间:
2016-05-12 12:21:09
阅读次数:
218
2892: 强袭作战 Description 在一个没有冬马的世界里,经历了学园祭后的春希着急着想要见到心爱的雪菜。然而在排队想见雪菜的fans太多了,春希一时半会凑不到雪菜面前。 作为高帅富,这样的问题怎么能难倒春希?春希从武也手中拿到了取自金闪闪宝库里的多啦A梦的传话筒,并且给每一个排队的fan ...
分类:
其他好文 时间:
2016-05-11 09:26:35
阅读次数:
164
题目大意在线维护一个序列,需要兹瓷插入、修改、求区间K小值。树套树开一颗权值线段树。
对于区间[l,r]对应的结点上保存一颗spaly,spaly中的结点权值均在[l,r],按照位置从小到大。
要维护一个结点的位置号。
插入操作,往下走然后插入到spaly中,并打区间加标记来维护位置号。
修改操作,相当于一次删除一次插入。
询问操作,利用线段树特性查找即可。
嘴巴我会,你要我打……还没准...
分类:
其他好文 时间:
2016-05-07 09:13:10
阅读次数:
255
点分治+线段树。。 对于每个重心,以点到重心的距离建权值线段树,维护点权总和。 修改就在那个点所属的logn棵线段树里改。 但显然查询的时候要考虑去重的问题... 对于当前层的重心,记录一下它在 上一层的重心的哪个儿子 的子树里,等一下查询到上一层的时候要把这部分的去掉(对应子树内的点应该是给这一层 ...
分类:
其他好文 时间:
2016-04-19 14:03:19
阅读次数:
117
分析:以前是划分树,感觉难写又不好记(当然肯定是因为我弱),然后学习了主席树(主席树好写), 我感觉CLJ神犇的论文就写的很好,其实就是若干棵权值线段树的建立,以及共用节点,同样的权值线段树是可以相加相减的 反正高度仰慕 #include <iostream> #include <stdio.h> ...
分类:
其他好文 时间:
2016-04-06 15:16:58
阅读次数:
153
对于每个询问,设不小于$s$的个数为$cnt$,小于$s$的和为$sum$。 那么如果可以进行$s$轮,当且仅当$sum\geq (c-cnt)\times s$。 权值线段树维护,时间复杂度$O(m\log m)$。 证明: 如果$cnt\geq c$,那么显然可以每次取$c$个。 否则如果$su
分类:
其他好文 时间:
2016-03-13 06:16:30
阅读次数:
164
BIT+(可持久化)权值线段树, 用到了BIT的差分技巧. 时间复杂度O(Nlog^2(N))-----------------------------------------------------------------------------------------#include#inclu...
分类:
编程语言 时间:
2016-01-26 22:07:37
阅读次数:
315
将所有权值离散化,建立权值线段树,维护区间内数字个数以及对数的和,用于比较乘积大小。对于每个连通块维护一棵权值线段树,合并时用线段树合并。对于操作3和4,暴力删除所有不合法节点,然后一并修改后插入线段树即可。时间复杂度$O(m\log m)$。#include#include#includeusin...
分类:
其他好文 时间:
2016-01-20 06:17:12
阅读次数:
199
树链剖分完就成了一道主席树裸题了, 每次树链剖分找出相应区间然后用BIT+(可持久化)权值线段树就可以完成计数. 但是空间问题很严重....在修改时不必要的就不要新建, 直接修改原来的..详见代码. 时间复杂度O(N*log^3(N))--------------------------------...
分类:
编程语言 时间:
2016-01-13 21:33:27
阅读次数:
449