ICode9

精准搜索请尝试: 精确搜索
  • LCT 小记2022-01-25 20:33:27

    这次不是整活了,记个笔记,加深下印象。 \(\text{1. LCT}\) 引入 题目描述 给定 \(n\) 个点以及每个点的权值,要你处理接下来的 \(m\) 个操作。 操作有四种,操作从 \(0\) 到 \(3\) 编号。点从 \(1\) 到 \(n\) 编号。 0 x y 代表询问从 \(x\) 到 \(y\) 的路径上的点的权值的 \(\text{x

  • LCT倾情压行板子2022-01-20 08:00:54

    改考试题的时候突然发现LCT压疯了写出来还挺好看? 好像写得比DC还短。。 namespace LinkCut_Tree{ int fa[NN],val[NN],sum[NN],tag[NN],son[NN][2]; bool get(int x){ return x==son[fa[x]][1]; } bool isroot(int x){ return x!=son[fa[x]][0]&x!=son[fa[x]][1]; }

  • Splay平衡树2022-01-15 15:33:12

    一、二叉搜索树(\(BST\)) 由于\(Splay\)就是一种\(BST\),所以先来说说\(BST\)是什么。 定义: \(BST\)其实就是一棵树,不一定为满二叉树, 但必定遵循左子树 < 根 < 右子树。 操作 基础操作都十分简单: 添加元素:每次与当前所在节点比较大小,小就往左走,大就往右走,直到找到一个空位就停下

  • Link-Cut-Tree(1)2022-01-05 23:32:18

    参考论文 求解范围:(动态树问题) 树上路径查询、修改 动态连边、删边 换根 lca 算法逻辑 概念: 类似树链剖分,把一棵树拆成许多链,每个链用splay维护(链上的为实边,否则为虚边),splay中以\(dep\)为关键字(左浅右深),splay里点之间用\(fa\)和\(son[0/1]\)连接,不同链之间用\(par\)连接(par是单

  • P2286宠物收养所(Splay)2021-12-07 15:01:53

    传送门:宠物收养所 可以考虑只维护一棵 Splay,随时判断宠物和领养者谁多,把多的插入到 Splay 里,类似营业额统计,对于新加进来的少的求前驱后继并比较谁更近。(注意判断相等的特殊情况,处理按题面来) 然后累计到答案里就可以啦。(reliese 操作删除的是某个值而不是节点编号,只有我这个蒟蒻才

  • 学习笔记:Splay2021-12-05 11:34:50

    之前学习 Treap 的时候理解的不是太好,堆性质和 BST 性质结合得不是很好。发现后续知识对于 Splay 是需要掌握的,于是心血来潮学习了 Splay,个人感觉理解的比 Treap 好,以后手写平衡树就用 Splay 啦。 模板题:Splay 开点 正常比较类似 Treap,只不过不需要随机啦。特殊需要记录的是每个节

  • luogu P3703 [SDOI2017]树点涂色2021-11-13 13:01:27

    题面传送门 看到操作一感觉就是个LCT的access操作。 然后答案就是统计到根节点虚边个数之类的。 如果我们能快速维护一个点到根的虚边个数,那么第二个询问差分一下,第三个询问区间取max就好了。 因为根据LCT的势能分析,access的虚实边切换次数不超过log,所以对于每次虚实边操作可以暴

  • Splay维护序列 & 洛谷 P3391 【模板】文艺平衡树2021-11-06 21:03:19

    传送门 解题思路 Splay如何维护序列呢? 以序列下标作为val值,扔到Splay中。 因为有区间翻转操作,所以实际上并不能保证绝对的按照val值排序,也就是说Splay的中序遍历结果是真正的序列,而val值对应的是当前序列的每个元素原来的位置。 与普通的Splay的区别在于多了一个区间翻转操作,可以

  • 文艺平衡树【模板】【Splay】2021-10-27 20:34:04

    >Link luogu P3391 >Description 给你一个初始为 1 ~ n 的序列 不断对一些区间进行翻转操作 输出最终的序列 >解题思路 放放其他大佬的Splay讲解 orz 这里简单说一下Splay: 相对于treap,不用用随机数(大家都知道随机数这种东西就是看rp的嘛);两者都是二叉查找树(好像是废话 然后

  • 2021-8 清北学堂 省选 数据结构 内容回顾2021-10-26 20:35:55

    主讲人:李欣隆 D1: Treap(tree+heap)性质:每个点随机分配一个权值,使treap同时满足堆性质和二叉搜索树性质,复杂度 \(O(n\log n)\)。 旋转(rotate)有单旋和双旋, treap只需要单旋,这一点比较简单。 旋转时最好先记录每个点的编号,再断连,再重构,最后按照点的编号调用函数 update(x)。 Spl

  • Splay Tree(伸展树)详解2021-10-20 08:01:58

    Splay Tree(伸展树) 简介 Splay Tree是一种二叉查找树(BST),即满足二叉树上任意一个节点的左儿子权值>自身权值>右儿子权值,它通过旋转操作使得树上单次操作的均摊复杂度为 \(\log n\),由Daniel Sleator和Robert Endre Tarjan(又是Tarjan)发明,希望了解复杂度证明的可以自行查询资料(我不会证

  • Splay2021-10-17 21:58:10

    Splay 1. Splay原理 原理 Splay是一颗二叉树,期望高度是log(n)的,但是不是完全平衡的。 和其他的平衡树一样,也存在基本的左旋和右旋操作,左旋和右旋示意图如下: 该函数实现如下: /* 对节点x进行向右旋转操作(//是需要变更的关系) z

  • 洛谷 P3721 - [AH2017/HNOI2017]单旋(LCT)2021-10-16 12:35:33

    洛谷题面传送门 终于调出来这道题了,写篇题解( 首先碰到这样的题我们肯定要考虑每种操作会对树的形态产生怎样的影响: 插入操作:对于 BST 有一个性质是,当你插入一个节点时,其在 BST 上的父亲肯定是,你把 BST 中父亲按权值 sort 一遍排成一列后,在待插入的数的两侧的数对应的节点中,深度

  • splay2021-10-05 21:34:02

    奇怪的码长增加了 魔板 bool Type(int x) {return x==son[fa[x]][1];} void Update(int x) {size[x]=cnt[x]+size[son[x][0]]+size[son[x][1]];} void change(int x) { int y=fa[x],z=fa[y],k=Type(x); fa[x]=z; if(z) son[z][Type(y)]=x; else fa[x]=0; son[y][k]=son[x][k

  • Splay2021-10-05 20:06:43

    Splay 模板(国庆作业表) void update(ll x){sz[x] = sz[son[x][1]] + sz[son[x][0]] + cnt[x];} // cnt[x] 表示将dt相等的值的个数总和 ll son_type(ll x){return x == son[fa[x]][1];} void rotate(ll x){ ll y = fa[x], z = fa[y],k = son_type(x); if(z){son[z][son_ty

  • Splay-22021-09-22 15:34:17

                     

  • P2234 [HNOI2002]营业额统计【Splay】2021-09-14 19:04:04

    传送门 给定长度为 N N N的数组,表示营业额 一 天 的 最

  • P1486 [NOI2004] 郁闷的出纳员【Splay】2021-09-14 19:03:28

    传送门 第一行有两个整数 n n n 和 min ⁡ \min min。

  • LCT2021-09-08 15:03:54

    LCT (Link - Cut Tree) 今天,YCC 本来是想搞一搞数论,但是老吕说:今天我闲着,给你们讲一讲LCT。 可是,我不闲啊! LCT 是什么? 是一个由若干棵子结点无序的有根树组成的森林,支持对树的分割, 合并, 对某个点到它的根的路径的某些操作, 以及对某个点的子树进行的某些操作。 基本概念 原树:就

  • splay/fhq-treap 问卷调查反馈—— [JSOI2008]火星人prefix(splay),Strange Queries(fhq-treap)2021-09-07 20:02:02

    文章目录 [JSOI2008]火星人prefixStrange Queries [JSOI2008]火星人prefix BZOJ1014 思路很好想,哈希字符串即可 只是平衡树的码量大 注意因为splay加入哨兵的原因,每个点在平衡树内的排名比真实排名大 1

  • Link Cut Tree2021-09-07 18:04:59

    前置知识 splay,树链剖分 attack 学长的博客园的好像挂掉了,在这再整理一下 = = 几乎都是抄的== 定义 LCT是一种解决动态树问题的数据结构,由 tarjan 提出。 解决问题 求 LCA 求最小生成树 维护链上信息(最大最小,链上求和等) 维护联通性 维护子树信息 优化单纯的算法 构造 树上的剖分

  • LCT 学习笔记2021-09-03 21:00:37

    推荐博文 文艺平衡树 LCT 的前置知识当然时文艺平衡树啦。先讲讲文艺平衡树。 题意 链接 给你一个长度为 \(n\) 的序列 \(a_i\),\(T\) 次操作,每次翻转一个区间,输出最后的序列。 题解 维护一个 Splay,一开始按照 \(a_i\) 为下标,\(i\) 为键值 进行建树,可以理解成键值就是这个点的深度

  • SP16549 QTREE6 - Query on a tree VI2021-09-03 15:03:28

    https://www.luogu.com.cn/problem/SP16549 LCT维护子树大小经典题 多 记 录 一 个 s

  • 可持久化SPLAY 学习笔记2021-09-01 09:04:42

    可持久化splay是怎么回事呢?splay相信大家都很熟悉,但是可持久化splay又是什么呢?下面小编带大家了解一下可持久化splay是什么吧! 可持久化splay就是可以持久化的splay,是不是很神奇呢?如果大家觉得很神奇,欢迎在评论区留言发表自己的看法!

  • [cf1137F]Matches Are Not a Child's Pla2021-08-30 22:33:35

    显然compare操作可以通过两次when操作实现,以下仅考虑前两种操作 为了方便,将优先级最高的节点作为根,显然根最后才会被删除 接下来,不断找到剩下的节点中(包括根)优先级最高的节点,将其到其所在树根的所有节点从下到上依次加入到序列的开头并删除,不难发现最终得到的序列即为燃烧的顺序

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有