随笔分类 -  数据结构—可持久化trie

摘要:和bzoj4504差不多,就是换了个数据结构 像超级钢琴一样把五元组放进大根堆,每次取一个出来拆开,(d,l,r,p,v)表示右端点为d,左端点区间为(l,r),最大区间和值为v左端点在p上 关于怎么快速求区间和,用一个可持久trie上维护最大xor值和对应的点即可 cpp include incl 阅读全文
posted @ 2019-04-15 18:20 lokiii 阅读(165) 评论(0) 推荐(0)
摘要:和主席树差不多的东西,一般用于求异或和最大之类的。 sum记录的是当前这一位(在二进制下)的值(0或1)在这一位之前出现过多少次。c[0]表示下一位为0,c[1]表示下一位为1。 关于第i位的取法:int q=(v&(1<<i))>>i; 新加一个数的时候就去沿着二进制的高位到低位一路加下来就行了。 阅读全文
posted @ 2017-12-25 18:58 lokiii 阅读(221) 评论(0) 推荐(0)
摘要:因为在后面加数字又求后缀和太麻烦,所以xor[p...n]=xor[1...n]^xor[p-1...n]。 首先处理出来区间异或前缀和,对前缀和建trie树(在最前面放一棵0表示最开始的前缀和 然后就是可持久化trie的板子了 阅读全文
posted @ 2017-12-25 18:56 lokiii 阅读(152) 评论(0) 推荐(0)