动态区间询问kth,单点修改. 区间用线段树分解,线段树上每条线段存一颗平衡树. 不能直接得到kth,但是利用val和比val小的个数之间的单调性,二分值.log^3N. 修改则是一次logN*logN. 总体是Nlog^2N+Mlog^3N. 一个值可以对应多个名次.每次查询严格小于val的个数. 把之前的Treap的值域加了一个vs表示值的出现次数,这样就可以支持重复的val了,并可以统计出值出现次数. 这样每个值的名次就变成一个区间了. 复杂度更低的做法:树状数组套主席树,还不太会. #i…
带修改的题主席树不记录前缀,只记录单点,用BIT统计前缀.  对于BIT上每一个点建一棵主席树,修改和询问的时候用BIT跑,在主席树上做就行了.  3k4人AC的题#256...应该不算慢 #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<algorithm> #define ll long long using namespace s…
在今天三黑(恶意评分刷上去的那种)两紫的智推中,突然出现了P3834 [模板]可持久化线段树 1(主席树)就突然有了不详的预感2333 果然...然后我gg了!被大佬虐了! hdu 2665 Kth number 题意就不写了,太经典了(可我还是不会这题,我太菜了) 大佬的题解写的太神仙了,我这么菜的人都看懂了2333,所以我就不写了... 不过这题是真的坑啊...老师在上面讲的时候,我们开始提交(他们交主席树,我交整体二分)然后等讲完我们还没过23333 MLE.TLE.WA(可能还有CE)轮…
题目:单点更新查询区间第k大 按照主席树的思想,要主席树套树状数组.即按照每个节点建立主席树,然后利用树状数组的方法来更新维护前缀和.然而,这样的做法在实际中并不能AC,原因即卡空间. 因此我们采用一种叫做整体二分的方法. 说一下具体做法: 首先要离线处理 我们把原数列也当成单点更新的操作,而更改值我们则看成两个操作,第一个是删掉原来位置的值,第二个是把新的值放置在这个位置,这样一来我们就可以得到最长n*3的操作序列. 然后就是我们的整体二分步骤了,首先我们对答案进行二分,这时我们会获得一个mi…
题目大意 给定一个数列,编号从 1 到 n,现在有 m 个操作,操作分两类: 1. 修改数列中某个位置的数的值为 val 2. 询问 [L, R] 这个区间中第 k 大的是多少 n<=50,000   m<=10,000 做法分析 本以为某一天我会用 splay 或者 树套树 去搞的,结果被用块状链表搞了 其实这题和链表没什么关系,利用了块状链表分块操作的思想 首先,看看数据规模:n<=50,000,那么,我们每一块的大小可以设置为 sqrt(n) 大概 230 的样子 用一个数组 A …
SP3946 K-th Number (/2和>>1不一样!!) #include <algorithm> #include <bitset> #include <complex> #include <deque> #include <exception> #include <fstream> #include <functional> #include <iomanip> #include <…
题意:求区间第k小,节点可修改 思路:如果直接用静态第k小去做,显然我更改一个节点后,后面的树都要改,这个复杂度太高.那么我们想到树状数组思路,树状数组是求前缀和,那么我们可以用树状数组套主席树,求出权值线段树前缀和,相减就是区间前缀和.而且我维护也只要改logn棵树就好了.具体看JQ博客. 代码: #include<cmath> #include<set> #include<map> #include<queue> #include<cstdio&g…
题意 \(n\) 个数,\(m\) 个操作,每次操作修改某个数,或者询问某个区间的第 \(K\) 小值. \(1 \leq n \leq 50000\) \(1 \leq m \leq 10000\) 思路 动态区间第 \(K\) 小的模板题.回到主席树的职能,它维护了一排前缀线段树,假如我们要快速求一段区间的总和,显然优先考虑前缀和:然而如果带上修改,就要考虑树状数组了.这里也相同,我们只需用树状数组套主席树即可,\(x\) 号主席树维护的不再是 \([1,x]\) 的信息,而是 \([x-\…
以下时空限制来自zoj Time limit 10000 ms Memory limit 32768 kB OS Linux Source Online Contest of Christopher's Adventure Author XIN, Tao 吐槽 zoj卡空间卡得太死了--32MB,远远不够放没优化过的主席树套树状数组--刚开始时段错误,还以为是t数组没开够,还是学得不扎实,别人说是就是,都没自己想想算算--后来二分骗数据,发现在还没开始操作.正在建最初的主席树时空间就爆了.没有优…
Dynamic Rankings Time Limit: 10 Seconds      Memory Limit: 32768 KB The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with the query like to simply find the k-th smallest number of the given N numbers. They…