随笔分类 -  数据结构->主席树

摘要:题解 ……………………………………………… 我莫不是一个智障吧 我把testdata的编号 当成数据组数读进来 我简直有毒 以为哪里写错了自闭了好久 实际上这题很简单,只要愉悦地开个启发式合并,然后每次暴力修改一个点的根缀主席树和倍增lca数组就行 复杂度$n \log^2 n$ 代码 阅读全文
posted @ 2019-01-13 21:57 sigongzi 阅读(225) 评论(0) 推荐(0)
摘要:题解 老年选手一道裸的主席树都要看好久才看出来 首先熟练的把这个区间建成$n$个主席树 然后对于一个询问,我们相当于在主席树上二分一个mid,使得$mid K + 1$正好和$[l,r]$区间中坐标在$[1,mid]$的人数一样就好 (居然代码只有2.2K,似乎比平均码长低啊,开心) 代码 阅读全文
posted @ 2018-11-26 15:25 sigongzi 阅读(182) 评论(0) 推荐(0)
摘要:题解 建出一个主席树,因为出现大于区间一半的数只能有一个,就看看左右区间的增加有没有大于一半,如果有就走向那个子树,如果没有那么返回0 代码 cpp include include include include include include include include include def 阅读全文
posted @ 2018-06-20 18:02 sigongzi 阅读(188) 评论(0) 推荐(0)
摘要:题解 一写过一交A的一道数据结构水题 我们发现大于C可以转化为这条路径上有多少个在某天之前开始调查的情报员,离线全部读入,变成树上路径查询某个区间的数出现过多少次,构建一棵根缀的主席树,查询的时候用两边的主席树减掉lca的主席树,然后判断一下lca是否合法 代码 cpp include // def 阅读全文
posted @ 2018-06-09 16:18 sigongzi 阅读(136) 评论(0) 推荐(0)
摘要:题解 做了一下SCOI2015,于是决定搬运SCOI2016= v = 如果没有加法,我们可以向左向右节点查找 每个总权值是2^18 1,然后左右分,那么每次是一个完整的节点 如果有了加法,那么我们如果希望有数满足某一位是1或者0,是一段取值的区间,我们要保证这个区间的左右端点减少x后这个区间里还有 阅读全文
posted @ 2018-06-08 15:15 sigongzi 阅读(133) 评论(0) 推荐(0)
摘要:题解 这道题的结论很显然= = 就是暴力求的话,把一个区间的数排一下序,如果当前这个数大于前面所有数的前缀和+1,那么前缀和+1即我们所求的答案 那么我们设置一个当前答案(初始为1),在主席树上求出来小于这个答案的数的和是多少,设为t,如果t = ans,那么设置ans = t + 1 容易发现,在 阅读全文
posted @ 2018-06-07 16:27 sigongzi 阅读(128) 评论(0) 推荐(0)