数据结构
文章平均质量分 80
OceanLight
xxxx
展开
-
可持久化线段树
给定一个序列 求在 li ri 之间的 数值大小在 【a,b】 的数的个数 有多少个 ?山东省省赛题目。 当时离线直接水过。 http://acm.upc.edu.cn/problem.php?id=2224#include #include #include #include #include #include #include #include #inc原创 2013-10-12 19:58:27 · 3585 阅读 · 0 评论 -
bzoj 3166: [Heoi2013]Alo 可持久化trie
题意 : 选取一个区间 区间中的第二大的那个数 可以跟 区间中的任意一个数 进行 异或得到一个区间内的最大的值。 问任意选取区间,问最大的那个 异或的值是多少。 ? 枚举每个数是 区间中的 第二大的值, 找到 可行的区间,可行区间就是 : [ 左边第二个比这个大的数的下标 +1,右边第二个比这个数大的数的下标-1];然后 可持久化 tire ,求 区间 对于 a 的原创 2013-10-31 19:27:52 · 2472 阅读 · 0 评论 -
bzoj 2741 分块 + 可持久化trie
题意是求 【a,b】 中 的最大字段异或和。 。看了神牛题解才会的。首先将 区间 转化成 前项和 中两个的异或值。 也就是 将 1- n 个数a[ ],转化成 0-n 个数的数列b[ ]。 也就是b[ r ] ^ a[ l ] = a[l+1] ^ a[l+2]^...^a[ r ]b[2] ^ b[ 0 ] = a[1 ]^a[ 2 ] 在查原创 2013-11-03 13:29:58 · 2822 阅读 · 0 评论 -
spoj COT 可持久化数据结构 (LCA模版)
查询树链第K大 。 每个版本的线段树维护的是 从这个节点到 根的 树链的版本, 由于树链第K大,在统计比X 小的数个数时 是可以 进行加减法运算的,所以 就可以用可持久化数据结构。维护个数时 , sum = f(a) + f(b) - f(c) -f(d) : c 为 a,b 的最近公共祖先, d 为 c 的父亲节点。这样就是 四个版本运原创 2013-10-30 10:26:34 · 1574 阅读 · 0 评论 -
LA 6348 数据结构
想法题: 坑爹细节没想清楚就敲了 。。 整体的思路 在更新的时候出了问题。 10WA->AC 。。 战绩成渣了。。。 弱渣的艰辛奋斗史。,。。 题意是 : 给出 n个矩形,问每一个外边的那个矩形 的编号。 (0 -> n-1) 性质: 对于矩形 a,b ,若 a.x2 b.x1的矩形 同样不会在a 矩形中。(单调形)。性质2:若 a原创 2013-10-29 15:17:32 · 745 阅读 · 0 评论 -
bzoj 3207 hash + 可持久化数据结构
思路: 把长度为K 的串 hash 之后,就变成 查询区间中有没有某个数。不知道为什么 RKHash 的思想 hash 时一直不过, 暴力 O(NK) hash 时 可以通过。 // 。。。bzoj 3207 打死不过 给跪了#include #include #include #include #include #include #inclu原创 2013-10-28 17:22:11 · 1833 阅读 · 0 评论 -
bzoj 2653 middle 二分+ 可持久化数据结构(可持久化感悟)
本以为可持久化数据结构掌握的还不错,通过此题 我顿时觉得 可持久化数据结构比我想想的要强大。本以为只有在用到 树上的减法才会用到可持久化数据结构的,如动态区间第K大 这种 明显就是用了 区间属性 可以 两个 前项和的属性 相减得到 。此时 可持久化数据结构是 按 下标建树,构建了n个版本的树。第 K 棵树 表示的是 区间 1-K 的属性。第K版本的意义并非只有 区间 1-K。完原创 2013-10-26 22:46:12 · 3591 阅读 · 0 评论 -
bzoj 2120 数颜色 树状数组套可持久化数据结构。
查询区间l,r 中 不同值的个数, 修改操作是 单点更新。如果没有更新,此题直接 离线。有更新的话,就只有 树状数组套 平衡树 或者 可持久化数据结构。 问题一 。统计 在 【1,l-1】中都多少个值没有出现在 【l,r】。也就是统计 【1,l-1】中有多少个值,在【1,r】中仅出现在 【1,l-1】。统计 对于ai ,它的下次出现与ai 值相同的点的下标是多少。 相当于 把所原创 2013-10-16 12:25:56 · 2694 阅读 · 0 评论 -
poj 2104 K-th Number 静态区间第K大 可持续数据结构
静态区间第K大。。首先应该会 集合第K大的方法。 按值建树,[i,j] 分成【i,p】 【p+1,j】 线段树中的均分。 如果sum(i,p)>=k ,说明第k大在左区间,接下来在左区间找第k大,否则 在右区间找 第k-sum(i,p)大。。利用可持续数据结构 相减的性质, 每次求出在下标 left 到right ,值在 【i,p】的数的个数。#include #in原创 2013-10-14 20:03:35 · 1487 阅读 · 0 评论 -
bzoj 1901 动态区间第K大 树状数组套可持久化数据结构
空间复杂度 nlgnlgn 在zojMLE 大视野 AC第一次用树套树。。写的 不优雅。/************************************************************** Problem: 1901 User: OceanLight Language: C++ Result: Accepted原创 2013-10-14 20:06:42 · 2352 阅读 · 0 评论 -
bzoj 3261 最大异或和 可持久化trie树
查询 i 属于【l,r】 中 p[i] ^ p[i+1 ] ^ ....^p[n]^x 中的最大值b【i】 为 p【1】^p【2】^……^p【i】 的异或值。也就是查询 b【i-1】^ b【n】^ X (i属于 [l,r])也就是变成在 一个区间中查询 对于A = (b[n]^ X)的最大的异或值。所以应该维护 b【i-1】。trick 对于 i =1 b原创 2013-10-30 22:34:00 · 5717 阅读 · 0 评论