- 2024-11-13Ynoi2014 等这场战争结束之后
题目大意有\(n\)个点,点有点权,维护一个完全持久化的数据结构并支持:将点\(x\)和\(y\)之间连接一条边。询问点\(x\)所在的连通块的第\(k\)小权值。数据范围:\(1\len,q\le10^5,0\lea_i\le10^9\)。时间限制:500ms,空间限制:20MB思路写一种比较简单的做法。先不考
- 2024-11-12全局平衡二叉树 (GBST) 小记
全局平衡二叉树(GBST)小记以下全局平衡二叉树简称\(\text{GBST(GlobelBalancedSearchTree)}\)。我认识的大多数人,对\(\text{GBST}\)的理解基本上都是静态\(\text{LCT}\),或者静态\(\text{TopTree}\),不过我对\(\text{LCT}\)的理解可能还差一点,所以我不打算从阉割\(
- 2024-11-08[USACO23JAN] Subtree Activation P 题解
这种问题一看满足条件就知道,一般不用想着怎么模拟题意。考虑转化问题。假如节点\(u\)满足了条件一,也就是仅有子树节点全部开启。那么我们把转化具象为:进行\(\text{siz}_u\)次操作直接清空;进行\(\text{siz}_{\text{fa}(u)}-\text{siz}_u\)次操作使\(\text{fa}(u)\)满足
- 2024-11-08[赛记] NOIP2024加赛1 && 多校A层冲刺NOIP2024模拟赛18
暴力错解大赛玩游戏82pts乱糊的错解,正确性和时间复杂度都不对,但是拿了82pts;对于正解,考虑从$k$将原序列分成两个部分,左边和右边,然后分别求一次前缀和(注意这里,可以省去很多分讨和常数),设前一个前缀和数组为$a$,后一个为$b$,那么问题就转化成有两个指针$i,j$,可以任
- 2024-11-06[ARC087F] Squirrel Migration
模拟赛题,不知道为什么放在最后一题,感觉评分过高了。首先是经典问题,最大值是\(\sum\min(siz,n-siz)\),证明考虑每条边上界。考虑证明的构造,对于重心的每个儿子拉出子树,求出子树大小即可转为序列上问题:每个点不跟内部匹配即可满足最大,容易证明充要。朴素dp发现怎么也避不开两
- 2024-11-05Tree
P4178Tree题目描述:给定一棵n个节点的树,每条边有边权,求出树上两点距离小于等于k的点对数量。数据范围:\(1≤n≤4×10^4\)\(1≤k≤2×10^4\)说句闲话感谢著名CB大师red_fire倾情推荐%%%在机房三个人唇枪舌剑了一小会,我们的CB大师直接开搞线段树,而仔细研读了数据范围的本
- 2024-11-022024CCPC哈尔滨 L 题解
思路首先可以发现这个期望其实是假的,我们只需要把所有方案的答案加起来,最后除以\((\frac{n(n-1)}{2})^2\)即可,现在考虑如何统计所有方案的答案。我们先考虑一条路径的方案数:假设存在一条从\(x\)到\(y\)的公共路径,其中\(x\)是\(y\)的祖先,那么小红和小蓝分别选择的路径,
- 2024-11-02平衡树
Splay技巧/记忆点:1、Rotate()中,使用变量记录位置关系和下标;2、Find()(找元素\(x\)所在位置)减少重复代码;3、求前驱/后继时先把这个数插进去再删掉;4、Splay()父子同侧先翻父亲,再翻儿子,否则翻两边儿子;5、siz[]在Splay()前先Pushup()到树根,这样在Rotate()维护会轻松一点;6、Delet
- 2024-11-02SP30785 ADAAPPLE - Ada and Apple 题解
洛谷题目传送门博客园可能食用更佳题目大意:给定一棵权值为\(0\)或\(1\)的树,\(n\)个点,\(q\)次操作:0i把结点\(i\)的权值取反;1ij询问点\(i\)到点\(j\)的最短路径上权值是否全为\(0\)或全为\(1\)。题目分析:树上操作,看了下操作发现是树剖板子题。开
- 2024-11-01不如不见
source:zr2024二十联测http://zhengruioi.com/contest/1717/problem/3061题意给定一棵以\(1\)为根的树,树边有两种形态:实边和虚边。初始这棵树的所有边都为虚边。定义assert(x)操作为:对于根到\(x\)上所有点,将其与所有儿子的连边置为虚边,然后给根到\(x\)这条链上的边置
- 2024-11-01洛谷题单指南-字符串-P3369 【模板】普通平衡树
原题链接:https://www.luogu.com.cn/problem/P3369题意解读:平衡树的基本操作,模版题。解题思路:1、二叉搜索树-BST二叉搜索树满足这样的性质:每一个节点的权值大于它的左儿子,小于它的右儿子。对BST进行中序遍历,将得到一个从小到大的有序序列,因此BST是为了维护一个有序序列的动态
- 2024-10-31多校 A 层冲刺 NOIP2024 模拟赛 16
多校A层冲刺NOIP2024模拟赛16T1四舍五入签到题注意到一个数是否会入上去只和其剩余系有关,即满足\(i\modj<\frac{1}{2}j\),会入上去,考虑枚举j的倍数,其贡献就成了一个区间,差分即可。时间复杂度是调和级数的,为\(O(n\lnn)\)。T2填算符贪心,特殊性质显然将所有\(\&\)放
- 2024-10-29树链部分
说句闲话这个东西已经20多天没写了,感觉已经忘没了,非常糟糕,只好赶快补一补,确实还是得多打代码,不然都忘光就丸辣。前言树链问题通常是关于树上路径的操作,将路径拆分成一条条链,然后用线段树维护链的权值。注:本题解并不适用于毫无基础的oier,只是做简单讲解,想了解具体定义请自行查
- 2024-10-26「FHQ_Treap」学习笔记
一、前言&基本理论来自笔者的肯定:最容易理解且比较好写的平衡树(不过就是常数有点大了),可能是笔者花了较长的时间去理解旋转Treap和Splay的旋转吧()。FHQ不仅比旋转法编码简单,而且能用于区间翻转、移动、持久化等场合。——《算法竞赛》FHQ_Treap的所有操作都只用到了分
- 2024-10-24两棵树问题的一种点分治做法
简述题面:你有两棵树,\(T_1\),\(T_2\),然后你需要对于每个点求出\(\min_{j\not=i}(dist(T_1,i,j)+dist(T_2,i,j))\)要求时间复杂度\(O(n\log^2n)\)或更优做法:考虑点分治,假如在\(T_1\)固定\(i,j\)一定要经过某个\(x\),然后把\(x\)作为分治点,那么实际上\(val[i,j]=
- 2024-10-24【模板】FHQtreap
mt19937rnd(time(0));structFHQtreap{ intlc[N],rc[N],val[N],key[N],siz[N],pool,root; intcreate(intx){ intp=++pool; val[p]=x; siz[p]=1; key[p]=rnd(); lc[p]=rc[p]=0; returnp; } voidupdate(intp){ if(!p)return; siz[p]=siz[lc[p]]+si
- 2024-10-23题解 SS241023D【数颜色】/ ZROI3029【静态邻域数颜色】
静态邻域数颜色-题目-ZhengruiOnlineJudge题目描述静态树上邻域数颜色。给一棵\(n\)个点的无根树,第\(i\)个点颜色为\(a_i\)。有\(q\)次询问,每次询问如下:给定\(x,d\),考虑所有距离\(x\)不超过\(d\)的点,求有多少种不同的颜色。形式化地,给定\(x,d\),求\(|\{a
- 2024-10-23树的重心
什么是树的重心?树上选取一个点,使得最大的子树大小最小的点叫做重心。重心有很多优美的性质,求重心是容易的,不再阐述。1.以重心为树根时,最大的子树的大小不超过全树大小的一半,同时条件是充要的对于充分性:考虑调整法。不妨现在钦定一个重心\(u\)作为树根,有一个儿子\(v\)且
- 2024-10-23全局平衡二叉树学习笔记
先挂一张jijidawang的图所以学这玩意就是被TopTree薄纱的有人把这玩意叫静态的LCT,然而可能只需要一些LCT的知识,并不需要会LCT。起码我不会注意这叫GBT,不叫GPT,能聊天的那个是CatGPT,不是CatGBT。前置知识:树链剖分用途\(O(\logn)\)处理树上链修改、链查询、子树修改、子树查
- 2024-10-22P2934 [USACO09JAN] Safe Travel G 题解
一个用平衡树,不用脑子的写法。(目前没有用平衡树的诶。)题意不经过最短路的最后一条边的最短路,保证最短路唯一。思路看到最短路唯一容易想到建出的最短路DAG其实是最短路树(以\(1\)为根)。那题意转化为求每个节点不经过与父亲的连边,所能到根节点的最短路。容易发现每个点的
- 2024-10-22非常牛 dsu on tree
轩辕4721年,彩笔@硒六爱吃硫,在某日的西艾斯批%你赛中花了两个小时切掉了T1和T2。随后看到T3,心想:“这不是傻逼题吗,建下克鲁斯卡尔重构树然后瞎几把低批不就做完了吗。”发现并不会低批。思考了一个小时发现并不是沙比低批,而是地艾斯优盎吹。@硒六爱吃硫打完暴力。注意到
- 2024-10-20线段树分治学习笔记
前置知识:线段树(只需要了解其结构)支持撤销的数据结构,如可撤销并查集,可持久化数据结构等。线段树分治是什么一种离线算法,用于处理假如某些信息会在某个时间段出现,求某个时刻的信息并。常见的离线算法还有CDQ分治,考虑一下这两个算法的区别。CDQ分治:对于每个操作,考虑其对后面询
- 2024-10-20Living-Dream 系列笔记 第83期
DSUontree又称tree上启发式合并。适用于统计子树内信息。原理:贪心。特征:通常需要一个全局的桶。实现方法:对于每个节点,先统计「轻子树」并清空桶,再统计「重子树」并保留桶。其中,「重子树」表示每个节点最大的子树,其余则称「轻子树」。通常需要离线询问。正确性说明:类似
- 2024-10-19[CF1616H] - Keep XOR Low 的题解
一道比较神奇的题目,状态显得比较扯淡,但是就是能过!先建立出trie树,设\(dp_u\)表示以\(u\)为根的子树内的答案。但我们发现,若\(x\)的当前位为\(1\),那么问题就没法根据他的左右子树求解了,怎么办呢。考虑一个很扯淡的状态,设\(dp_{u,v}\)表示考虑了\(u,v\)为根的子树,他