首先要求第k大就想到用主席树来处理 但是不能直接用树链剖分的dfs序来维护,因为一条链对应的dfs下标可能是断开的几段,无法用权值线段树来维护 那么久维护每个点到根节点的全值线段树,结点u的权值线段树记录了其到根节点路径上数值的出现次数 主席树相当于维护了一个前缀和,由树上前缀和可以分析出u->v路 ...
分类:
其他好文 时间:
2019-04-24 15:58:13
阅读次数:
156
题意:n个点的树,每个点有权值,问你u~v路径第k小的点的权值是? 思路: 树上主席树就是每个点建一棵权值线段树,具体看jq博客,LCA用倍增logn求出,具体原理看这里 LCA板子: 代码: ...
分类:
其他好文 时间:
2019-04-24 00:22:40
阅读次数:
160
http://www.51nod.com/Challenge/Problem.html#!#problemId=1494 题解 一开始有start个人投自己,num表示当前已经收买了多少人,从大到小枚举自己以i张票当选,那么其他人的票数一定要小于i,拿钱收买他们花费最少的>=i的这部分人,再加上另外 ...
分类:
其他好文 时间:
2019-04-23 11:13:38
阅读次数:
125
这种题为什么要用到主席树啊、、8说了,直接上代码 ...
分类:
其他好文 时间:
2019-04-22 12:27:37
阅读次数:
110
就是板子、、、 节点中维护的值,就是1-i之间这个区间内出现了数的次数(权值线段树?雾)。然后当我们查询的时候,就是利用到了前缀和的思想,拿左端点那棵树和右端点一减~ 更新的时候需要新开的点就开,不需要的就连到原来的点上去,相当于更新一条链。这样复杂度是nlogn的。 好想大佬们都把根作为实参转进去 ...
分类:
其他好文 时间:
2019-04-18 00:42:12
阅读次数:
192
题目大意: 共Q次操作 操作有两种 操作一 在序列尾部加入f[i]个s[i] 操作二 查询序列第f[i]小到第s[i]小之间的总和 离线操作 把序列内的值离散化 然后利用离散化后的值 在线段树上对应权值操作 权值线段树维护权值对应的值的个数和总和 查询 用s[i]的前缀和减去f[i]-1的前缀和 具 ...
分类:
其他好文 时间:
2019-03-19 18:50:19
阅读次数:
149
"题目链接 $Click$ $Here$" 线段树合并,没想到学起来意外的很简单,一般合并权值线段树。 建树方法和主席树一致,即动态开点。合并方法类似于$FHQ$的合并,就是把两棵树的信息整合到一个里面。暂时没写过定义域不同的线段树合并,具体方法也想象不出来,写到了再详细讲吧。 算法复杂度:均摊$O ...
分类:
其他好文 时间:
2019-03-18 21:07:41
阅读次数:
177
http://acm.hdu.edu.cn/showproblem.php?pid=6464 不理解先看博客:https://blog.csdn.net/g21glf/article/details/82986968 已知一开始有一个空序列,接下来有Q次操作,每次操作给出type、first和sec ...
分类:
其他好文 时间:
2019-03-17 14:04:14
阅读次数:
226
感谢这篇博客( "这里跳转" )以及邱宇大神的讲解,我也算作入门(自闭)了。 需要掌握的前置知识点:动态开点线段树、权值线段树。 一、合并思想 线段树合并,就是指建立一颗新的线段树,保存原有的两颗线段树的信息。 那么就是: 假设现在合并到了线段树的a、b某一个pos 如果a在这个区间有pos,b没有 ...
分类:
其他好文 时间:
2019-03-07 14:11:56
阅读次数:
138
P3521 [POI2011]ROT-Tree Rotations 本题可以通过合并数据结构解决。 权值线段树合并的时间复杂度为O(nlogn)。 证明: ? n个节点相互独立。 ? 考虑合并节点的意义:两棵线段树在当前区间内都有值且新的树在当前区间的值相对原来两棵树的值都增加了。 ? 说明对于一个 ...
分类:
其他好文 时间:
2019-02-13 20:51:12
阅读次数:
143