随笔分类 -  data structure

摘要:BZOJ 3647——可持久化并查集加强版 不会可持久化并查集先去做http://www.cnblogs.com/Fish-/p/8242582.html. 幼稚的以为直接交原来的就好了,结果T了! 加个路径压缩,but一直RE,请了几位大神还是解决不了。。所以先留个坑。。 阅读全文
posted @ 2018-01-21 18:04 Konnyaku 阅读(259) 评论(0) 推荐(0)
摘要:网络流.Dinic 定义: 源点:只有流出去的点汇点:只有流进来的点流量:一条边上流过的流量容量:一条边上可供流过的最大流量残量:一条边上的容量-流量 性质: 对于任何一条流,总有流量<=容量 ∑p∈Ek[p][u]==∑q∈Ek[u][q](其中k[i][j]表示i到j的流量) 对于任何一条有向边 阅读全文
posted @ 2018-01-21 18:00 Konnyaku 阅读(220) 评论(0) 推荐(0)
摘要:BZOJ 2152 Luogu 2634——聪聪可可 题意 求两点之间路径和为3的倍数占的概率(最简) 解题思路与BZOJ1468差不多, 不过本题在计算经过某个点的次数时用了个ans数组, 对路径长度模3,得到的是0或1或2,但仍需要去重。 返回的值应是ans[0]*ans[0]+ans[1]*a 阅读全文
posted @ 2018-01-12 17:43 Konnyaku 阅读(152) 评论(1) 推荐(0)
摘要:Doubling Algorithm——倍增算法 是一种可以优化时间复杂度的神奇的算法,可以用它来求LCA等等。 基本思想: deep[i] 表示 i节点的深度, fa[i,j]表示 i 的 2^j (即2的j次方) 倍祖先,那么fa[i , 0]即为节点i 的父亲, 然后就有一个递推式子:fa[i 阅读全文
posted @ 2018-01-12 16:53 Konnyaku 阅读(318) 评论(1) 推荐(0)
摘要:BZOJ 1468——tree 点分治思想,处理一些树上路径问题中的高效算法。 重心——作用是可以优化时间复杂度,使递归的层数最少。 重心就是以某个点为根且这个点的子树最大值是最小的。 找重心的基本思路: dfs求得每一个点的最大子树Maxsize,用数组记录下来, 判断这个值是否比当前根的Maxs 阅读全文
posted @ 2018-01-12 16:42 Konnyaku 阅读(196) 评论(1) 推荐(0)
摘要:Mo's Algorithm——莫队算法 <一个优雅的暴力算法> 主要题型分为三种,不带修改莫队,带修改莫队,树形莫队。 <最最最最最普通的莫队> 莫队算法实质是离线情况下对所有即将要查询的区间进行一次美妙的sort(以L为第一关键字,R为第二关键字),然后用 两个指针L,R,在区间上用看似暴力的方 阅读全文
posted @ 2018-01-07 15:51 Konnyaku 阅读(378) 评论(0) 推荐(0)
摘要:<范浩强treap>-函数式平衡树 范好强treap是一种毒瘤treap,它并不用通过旋转来达到平衡,它主要有两种操作: merge(x,y):将x的子树和y的子树合并起来;{注意:merge操作中,x子树中的最大值永远会小于等于y子树中的最小值 所以在merge的过程中只需要考虑随机值,而不需考虑 阅读全文
posted @ 2018-01-02 19:24 Konnyaku 阅读(216) 评论(0) 推荐(0)
摘要:树状数组套主席树 树状数组的每个节点维护的是一段区间,我们将每个区间构造成一棵线段树,这时候如果我们要修改一个值,只需要修改logn个节点即可, 时间复杂度为log^2(n),树状数组维护的区间是数的个数n;离散化时是把所有数(包括要修改的数)全部离散化; 1.修改 在修改之前,我们应先把序列里原来 阅读全文
posted @ 2018-01-01 21:17 Konnyaku 阅读(198) 评论(0) 推荐(0)
摘要:可持久化线段树-主席树 主席树又称函数式线段树,顾名思义,就是通过函数实现的,也称可持久化线段树,支持在线处理,可以访问历史版本,后一刻可参考前一刻的状态,充分利用共同数据, 节省空间;主席树可以实现查询区间k小的问题等; 主席树的每个节点对应一棵线段树,对于一个序列,我们采用前缀和的思想,如a[1 阅读全文
posted @ 2018-01-01 16:37 Konnyaku 阅读(130) 评论(0) 推荐(0)
摘要:emm接下来讲讲splay,个人比较喜欢splay,其主要操作就是伸展旋转,它的应用比较广泛,对于一个有序序列,它可以实现区间翻转,还可以求区间第k大。 splay的核心操作-旋转(本人的旋转可能与一般旋转有点不一样): 通过上图两种旋转我们可以发现一点点规律:若要rotate(x),先获取x为该父 阅读全文
posted @ 2018-01-01 15:57 Konnyaku 阅读(255) 评论(0) 推荐(0)
摘要:TREAP treap(树堆)是指有一个随机附加值满足堆的性质的二叉搜索树,基本操作期望时间复杂度为O(logn),相比于其他平衡树,treap实现较简单,且能实现随机平衡。 在这里我就讲下小根堆的treap(大根堆一样),treap在SBT的性质上还附加了一个随机值(优先级),小根堆的话,当前节点 阅读全文
posted @ 2018-01-01 14:48 Konnyaku 阅读(220) 评论(0) 推荐(0)