
数据结构
文章平均质量分 79
Hexrt
南昌航空大学软件学院,ACMerRetired。
求知若渴,虚心若愚。
傲慢与偏见才是进步的最大阻碍。
展开
-
看错题(赛氪冬季赛)【线段树】
传送门题意给定一个能够满足是完全二叉树的线段树能够在线段树上区间加值,每次询问求整棵树的价值价值定义为∑u∑w,w∈u➡1路径上的节点值,u∈线段树叶子节点\sum_u{\sum{w},w\in u➡1路径上的节点值},u \in线段树叶子节点∑u∑w,w∈u➡1路径上的节点值,u∈线段树叶子节点分析数据范围较大,需要在区间求和的过程中,动态维护其价值一开始建树的时候,可以预先求出价值ans=∑uvalu∗lenu,u∈所有线段树节点ans=\sum_u{val_u*len_u},u \in原创 2022-03-28 18:57:48 · 1671 阅读 · 0 评论 -
树的果实(赛氪冬季赛)【启发式合并 dsu on tree】
传送门题意给定一颗有根树(1为根),mmm次询问,当前询问的子树中的价值是多少?价值定义为,取子树中所有边权,∑w(w∗cntw)2,w∈子树边权集合\sum_{w}{(w*cnt_w)^2},w\in子树边权集合∑w(w∗cntw)2,w∈子树边权集合分析题意很清楚,求的是子树信息统计,此时我们可以使用树上启发式合并来解决(优美的暴力)在之前有一篇文章有写【dsu个人理解】暴力的写法是,对于每个子树都进行统计,正确性保证,时间复杂度为On2On^2On2,但是通过启发式合并,能够降到Onl原创 2022-03-28 18:35:03 · 512 阅读 · 0 评论 -
F - LIS on Tree【二分OR权值线段树】
传送门 atcoder F - LIS on Tree题意给定一颗树,求节点111到各个节点路径上的最长上升子序列的长度分析之前只知道对序列进行二分nlognnlognnlogn的做法给定一个数组1 4 3 6 2 5 8 7 8 9当前数114143136136212651258125871257812578原创 2022-03-07 20:51:35 · 249 阅读 · 0 评论 -
H. Reverse the String【哈希+二分】
传送门 codeforces H. Reverse the String题意给定一个字符串,求可以将字符串中的任意区间的一个连续子串翻转一次的前提下,求翻转后字典序最小的字符串是什么分析将原串的所有字符排序,翻转肯定是从排序后的字符串与原字符串不同的位置开始的那么可以遍历翻转的结束位置,比较所有翻转后字符串的大小假如当前字典序最小的是 sss,那么和翻转后的字符串 ttt比较时,可以先找到两个字符串的 最长公共前缀(lcplcplcp),前面都是相同的,只需比较不同的第一个位置的大小即可此时,原创 2022-03-07 20:07:07 · 984 阅读 · 0 评论 -
P1198 [JSOI2008]最大数
传送门分析查询数列倒数LLL个数的最大值添加一个值到数列末尾区间最值,动态添加,SplaySplaySplay不是也能干这些事情吗这里无非就是为了要维护一个最大值而已,记得预插入两个哨兵(最小值和最大值)那么请看 push_uppush\_uppush_up 函数,此题得解行! 那就用SplaySplaySplay代码//P1198/* @Author: YooQ*/#include <bits/stdc++.h>using namespace std;#de原创 2021-09-14 18:56:54 · 139 阅读 · 0 评论 -
P1486 [NOI2004] 郁闷的出纳员【Splay】
传送门第一行有两个整数 nnn 和 min\minmin。nnn 表示下面有多少条命令,min\minmin 表示工资下界。接下来的 nnn 行,每行一个字符 xxx 和一个整数 kkk,表示一条命令。命令可以是以下四种之一:I kI \space kI k 新建一个工资档案,初始工资为 kkk。如果某员工的初始工资低于工资下界,他将立刻离开公司。A kA \space kA k 把每位员工的工资加上 kkk 。S kS \space kS&原创 2021-09-14 18:56:30 · 164 阅读 · 0 评论 -
P2234 [HNOI2002]营业额统计【Splay】
传送门给定长度为NNN的数组,表示营业额一天的最小波动值=min{∣该天以前某一天的营业额−该天营业额∣}一天的最小波动值 = \min\{|\text{该天以前某一天的营业额}-\text{该天营业额}|\}一天的最小波动值=min{∣该天以前某一天的营业额−该天营业额∣}求每一天的营业额第一天为它本身分析假设当前的营业额为 xxx,我们要知道以前的,小于xxx的最大值,大于xxx的最小值这就是前驱和后继了所以我们要动态维护前驱后继注意,非严格前驱后继!可以等于,所以做些小变化。详细原创 2021-09-14 18:56:23 · 248 阅读 · 0 评论 -
P3369 【模板】普通平衡树【Splay】
传送门分析您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入 xxx 数删除 xxx 数(若有多个相同的数,因只删除一个)查询 xxx 数的排名(排名定义为比当前数小的数的个数 +1+1+1 )查询排名为 xxx 的数求 xxx 的前驱(前驱定义为小于 xxx,且最大的数)求 xxx 的后继(后继定义为大于 xxx,且最小的数)行!就用Splay了,只要理解,rotate和splay,直接往上套,别管什么常数了插入,找到xxx的前驱和后继,先旋前驱到根原创 2021-09-14 18:56:14 · 109 阅读 · 0 评论 -
P3380 【模板】二逼平衡树(树套树)
传送门查询 kkk 在区间内的排名查询区间内排名为 kkk的值修改某一位值上的数值查询 kkk 在区间内的前驱(前驱定义为严格小于 xxx,且最大的数,若不存在输出 −2147483647-2147483647−2147483647)查询 kkk 在区间内的后继(后继定义为严格大于 xxx,且最小的数,若不存在输出 214748364721474836472147483647)分析对于静态区间第K大来说,那就上主席树吧如果动态的话,就树套树了如果是双动态的话,那就树套树套树了(大雾)原创 2021-09-14 18:56:05 · 127 阅读 · 0 评论 -
P3391 【模板】文艺平衡树 【Splay】
传送门您需要写一种数据结构(可参考题目标题),来维护一个有序数列。其中需要提供以下操作:翻转一个区间,例如原有序序列是 [5 4 3 2 1],翻转区间是 [2,4] 的话,结果是 [5 2 3 4 1]。分析一道经典 SplaySplaySplay 模板题这里介绍一下经常使用的 SplaySplaySplay 相关代码和思想树的节点struct Tr { #define ls son[0] #define rs son[1] int k, sz, fa, rev; int son[2原创 2021-09-14 17:33:21 · 108 阅读 · 0 评论 -
P5490 【模板】扫描线
传送门扫描线模板分析逃不掉,总该要学的。学完后,发现思想不难,早干嘛去了大概说一下核心要义 扫描&&线段定义一根线,从下往上扫因为矩形的话,肯定在竖直方向有一段是连续的(也就是有个高,已知)如果要知道某一小段的面积,我们需要知道长度为多少?那么我们就可以使用线段树维护这个长度长度的定义为,只要有一个矩形贡献了一段长度,这一段的长度就已经有了,不会因为矩形个数增加把所有长度都统计起来,最后乘以高度即可接下来如何维护如果一个矩形的两个x相同,说明没有面积,面积为 000原创 2021-09-14 17:25:53 · 152 阅读 · 0 评论 -
P4180 [BJWC2010]严格次小生成树
传送门如题,严格次小生成树分析对于 KruskalKruskalKruskal 执行过程中,能够构造出一棵树代码//P4180/* @Author: YooQ*/#include <bits/stdc++.h>using namespace std;#define sc scanf#define pr printf#define ll long long#define int long long#define FILE_OUT freopen("out", "w"原创 2021-09-08 01:04:29 · 119 阅读 · 0 评论 -
SP10707 COT2 - Count on a tree II【树上莫队】
SP10707 COT2 - Count on a tree II【树上莫队】给定一颗无根树,求树上两点路径上的节点有多少不同的数字可以离线前提,能够通过某种操作,将树上路径问题,转化成区间问题这样,类似于求区间不同数,区间众数,区间mex等操作就能通过莫队离线来做了原创 2021-08-29 17:44:46 · 153 阅读 · 0 评论 -
P3402 可持久化并查集 【可持久化线段树】详解
给定 nnn 个集合,第 iii 个集合内初始状态下只有一个数,为 iii。有 mmm 次操作。操作分为 333 种:1 a b 合并 a,ba,ba,b 所在集合2 k 回到第 kkk 次操作(执行三种操作中的任意一种都记为一次操作)之后的状态3 a b 询问 a,ba,ba,b 是否属于同一集合,如果是则输出 111 ,否则输出 000传送门可持久化并查集模板介绍并查集通常来说是不可逆的,因为我们存在很多骚操作,让并查集的复杂度降到每次查询均摊O(1)O(1)O(1),比如路径压缩原创 2021-08-25 13:39:12 · 238 阅读 · 0 评论 -
P6329 【模板】点分树 | 震波【动态点分治】详解
传送门给定一个无根树,求距离某点不小于kkk的所有点的权值和支持单点修改分析动态点分治,点分治是主要思想假如说,上面的询问操作只有一次那么,我们一次点分治就能够完成查询权值和代码代码...原创 2021-08-24 21:01:23 · 214 阅读 · 0 评论 -
P2824 【[HEOI2016/TJOI2016]排序】【线段树分裂】+【珂朵莉树】详解
戳这里,离线做法给定一个长度为NNN的数组,对MMM个区间 l∼rl \sim rl∼r 进行排序求最后 ppp 位置的值排序分(正序和倒序两种)分析上面给的链接有离线的做法,算是一个比较套路的做法,用线段树维护010101序列可以在 lognlognlogn 的时间内实现排序,所以通过二分最终答案可以得到值但是这题强制要求在线呢?这样的话,我们需要使用数据结构维护这些数的状态如何维护信息我们思考这样一个过程:初始我们有NNN个区间,都是有序的(每个数自成一个区间)一旦将区间l∼rl原创 2021-08-24 19:56:28 · 379 阅读 · 2 评论 -
P5494 【模板】线段树分裂
给出一个可重集 aaa(编号为 1),它支持以下操作:0 p x y:将可重集 ppp 中大于等于 xxx 且小于等于 yyy 的值放入一个新的可重集中(新可重集编号为从 222 开始的正整数,是上一次产生的新可重集的编号+1+1+1)。1 p t:将可重集 ttt 中的数放入可重集 ppp,且清空可重集 ttt(数据保证在此后的操作中不会出现可重集 ttt)。2 p x q:在 ppp 这个可重集中加入 xxx 个数字 qqq。3 p x y:查询可重集 ppp 中大于等于 xxx 且小于等于 .原创 2021-08-24 19:00:15 · 198 阅读 · 0 评论 -
P3332 [ZJOI2013]K大数查询【整体二分】或【树套树】
传送门给定一个长度为NNN的可重集合支持修改,离线求区间可重集合的并集第K大分析对于区间第K大,支持修改,自然会想到树套树经典的树套树,求动态区间第K大的时候用树状数维护版本信息,主席树(权值线段树)用来记录当前版本下的信息接下来求区间第KKK大,进行二分就行了这里由于是可重集,可以使用权值线段树维护可重集中数字的数量,作为内层嵌套外层要维护区间的可重集,使用线段树维护区间可重集...原创 2021-08-21 20:23:06 · 353 阅读 · 0 评论 -
P2617 Dynamic Rankings 动态区间第K大【树套树】或【整体二分】
传送门动态区间第KKK大问题,单点修改(这里是第kkk小,即是从小到大第kkk个)这里还有个区间修改,有点类似的 P3332 [ZJOI2013]K大数查询分析树套树树套树,就是用一种树形结构维护另一个数据结构形式多样,根据需求定制这里是,动态区间第KKK大考虑静态的情况下,解法有在线:主席树,划分树离线:整体二分如果要支持修改,划分树是根据最终结果排序后再构造出来的树,所以不资瓷修改剩下的,主席树和整体二分了,整体二分下面再说主席树静态区间,每一个版本的值域情况对每一个位置原创 2021-08-21 20:02:23 · 777 阅读 · 0 评论 -
CF-558-E. A Simple Task【线段树区间set】
传送门给定一个长度为NNN字符串,均为小写字母对区间进行MMM次排序,从小到大或者从大到小求,最后的字符串长什么样分析这里发现,小写字母只有26个,对于每次排序操作,就让这些字符单独排序,正序就先排a,在a排完的位置后排b,以此类推那么,就构建26棵线段树,维护当前树表示字母出现的位置对于排序来说,对某个区间字母进行排序,为区间setsetset,要知道有多少个字母进行排序,又是区间queryqueryquery,所以线段树支持这两个功能足以,为了保证复杂度,懒惰标记是要有的代码//CF5原创 2021-08-21 17:29:41 · 186 阅读 · 0 评论 -
SP3267 DQUERY - D-query【莫队】或【主席树】
传送门给定一个长度为NNN的数组,求区间 l∼rl \sim rl∼r 不同的数字分析对于此类后面出现会影响(覆盖)前面出现效果的问题需要往当前位置左边最后一次出现位置思考比如,mexmexmex 也是如此这道题求 区间mex 也是同样处理这种位置会覆盖前一个位置影响的,都考虑左边最近一个的位置静态区间在线查询 MEXMEXMEX主席树,维护最近值域出现的位置在 rrr 树上二分找值域的出现位置小于 lll 的最小值证明:假如一个数xxx 在区间 l∼rl \sim rl∼r 出现原创 2021-08-21 16:01:17 · 108 阅读 · 0 评论 -
P4137 Rmq Problem / mex【权值线段树】【莫队】
传送门给定长度为NNN的数组,求l∼rl \sim rl∼r 的mexmexmex(从0开始第一个没有在区间出现的数)分析这种位置会覆盖前一个位置影响的,都考虑左边最近一个的位置静态区间在线查询 MEXMEXMEX主席树,维护最近值域出现的位置在 rrr 树上二分找值域的出现位置小于 lll 的最小值证明:假如一个数xxx 在区间 l∼rl \sim rl∼r 出现过,那么它在rrr数上对应值域的值,一定是大于等于lll的推得,一个数在l∼rl \sim rl∼r区间出现过的条件是,在rr原创 2021-08-21 16:00:51 · 240 阅读 · 0 评论 -
2019 icpc西安邀请赛 E. Tree【树链剖分+区间异或和】
2019 icpc西安邀请赛 E. Tree【树链剖分+区间异或和】求树上简单路径的异或和【树链剖分】+【线段树】支持,修改链上的值为 a i ∣ t a_i|t ai∣t 以及 a i & t a_i\&t ai&t对位考虑,每一位建立一颗线段树,维护链上值的位情况原创 2021-08-14 16:56:45 · 172 阅读 · 0 评论 -
P3157 [CQOI2011]动态逆序对【CDQ分治-三维带修改】
现在给出 1 ∼ n 1 \sim n 1∼n 的一个排列,按照某种顺序依次删除 m m m 个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。CDQ分治-三维偏序【操作时间】【数字下标】【数值】操作时间优先级高,必然排在第一维,对操作时间进行排序【数字下标】和【数值】优先级相同,任选一个进行分治原创 2021-08-14 16:30:33 · 166 阅读 · 0 评论 -
CF484-E. Sign on Fence 【整体二分】
传送门代码考虑单次二分最后二分过程中,某些重复操作可以通过单调性跳过,维护整体二分时的单调性代码里面带过去的值,因为不是中途修改的值,所以可以分开维护,这里注意一下原创 2021-08-14 16:07:11 · 157 阅读 · 0 评论 -
BZOJ.1176. [Balkan2007]Mokia【CDQ分治-三维】
BZOJ.1176. [Balkan2007]Mokia【CDQ分治-三维】维护一个 W ∗ W的矩阵,初始值均为 S S S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数 M < = 160000 ,询问数 Q < = 10000 , W < = 2000000带单点修改的矩阵和离线查询原创 2021-08-14 15:34:51 · 100 阅读 · 0 评论 -
K-th number-静态区间第K大【划分树模板】
传送门给定l,rl,rl,r求区间第kkk大,静态分析划分树模板代码///* @Author: YooQ*/#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;#define sc scanf#define pr printf#define ll long long#define int long long#define FILE_OU原创 2021-08-14 02:22:55 · 216 阅读 · 0 评论 -
P3810 【CDQ分治模板】三维偏序(陌上花开)
传送门NNN个元素,每个元素三个属性{ai,bi,ci}\{a_i,b_i,c_i\}{ai,bi,ci},求每个iii,满足aj<=ai,bj<=bi,cj<=cia_j<=a_i,b_j<=b_i,c_j<=c_iaj<=ai,bj<=bi,cj<=ci条件的jjj的个数说白了就是,三维空间中,某个点与原点围成的图形中覆盖了多少点分析经典CDQCDQCDQ三位偏序问题对于二维的,我们可以通过,先排序第一维(sortsort原创 2021-08-14 02:13:19 · 135 阅读 · 0 评论 -
HDU.1541.Stars【CDQ分治-简单二维偏序问题】
传送门给定NNN个点的坐标,求每个点在它左下方有多少个点(xxx相等和yyy相等也算)分析典型的CDQCDQCDQ分治二维偏序问题既然是二维的,就像归并排序一样,将第一维数字下标变有序(归并排序给出初始序列的时候下标就有序了),再将值进行排序,且在归并的时候能够计算逆序对,(i<j&&ai>aj)(i<j\&\&a_i > a_j)(i<j&&ai>aj)此题也能用归并排序(CDQ分治)的思路写,当然也能用树状原创 2021-08-14 01:59:09 · 1209 阅读 · 0 评论 -
BZOJ.3551. [ONTAK2010]Peaks加强版
Kruskal重构树 强制在线,主要就考一个【重构树】以及【树链剖分】+【线段树区间第K大】,离散化建立一颗权值线段树即可重构树的性质,某点往根节点跳,找到能够其值等于<=限制值的最远的节点,此节点的所有子树的叶子节点均可在不超过该节点权值的情况下相互到达。也就是题中的连通块。通过树链剖分和主席树将这些叶子节点的区间信息维护起来找第K大(为什么能维护呢?子树在树剖过后是连续的区间)原创 2021-08-14 01:44:54 · 145 阅读 · 0 评论 -
HDU3473.Minimum Sum【划分树加标记】
传送门给定一个NNN长度的数组,求区间[l,r][l,r][l,r]找到一个整数xxx满足∑i=lr∣x−xi∣\sum_{i=l}^{r}{|x-x_i|}∑i=lr∣x−xi∣最小也就是找中位数,区间第 (len+1)/2(len+1)/2(len+1)/2 大分析找静态区间第KKK大可以通过划分树或者主席树找同时要找到xi<=xx_i<=xxi<=x的和,以及xi>xx_i>xxi>x的和主席树,维护权值为下标的同时,维护权值乘个数的和即可原创 2021-08-12 19:17:27 · 91 阅读 · 0 评论 -
划分树-解题报告
核心要义:划分树的每个区间根据排序后的中值进行大小划分分析构造和查找每个区间,指的是,从[1,N][1,N][1,N]区间划分两半,一半为 [1,mid][1, mid][1,mid] 另一半为 [mid+1,r][mid+1, r][mid+1,r],类似线段树将区间每次折半划分中值,不是找当前区间位置中间的值,而是在排序后的数组中找位置中间的值,这样才能保证区间恰好被分成两半划分,处理数据,将数据放到下一层,规则是小于等于中值的放左边,放满为止,剩下的放右边可以推出,像线段树一样的划原创 2021-08-10 19:12:51 · 176 阅读 · 0 评论 -
P3224 [HNOI2012]永无乡【并查集、线段树合并】
传送门在线维护连通块里面权值的第KKK大分析维护集合第K大,由于每个点的权值都是不同的,且值域范围111~NNN,考虑使用动态开点权值线段树维护。剩下的就是,如何在线维护加入一个集合到一个集合里面的数据,线段树合并能够在此条件下有良好的复杂度,实现将一个集合里面的桶合并到另一个集合里面(权值线段树就是一个桶线段树)。注意,在并查集维护点联通的时候,线段树合并也要朝着并查集合并的防线进行合并。比如有操作father[y]=xfather[y] = xfather[y]=x 此时 root[x]=m原创 2021-08-09 11:42:33 · 170 阅读 · 0 评论 -
BZOJ 3732 Network【kruskal重构树、树上倍增、树链剖分】
文章目录分析代码Kruskal重构树树上倍增无向图,NNN个节点,表示询问从AAA点走到BBB点的所有路径中,最长的边最小值是多少?KruskalKruskalKruskal 重构树 or 树链剖分 or 树上倍增传送门分析对于此题分析:在所有路径中取最长的那一条边,使得边最小假设找到了这条路径那么这条路径里面的其它边必然小于等于这条边,且这时候 AAA 和 BBB 是联通的,也就是说,其它能够联通AAA 和 BBB 的路径中,一定会存在大于等于这个值的边。假如我们在图中删除所有大原创 2021-08-09 01:25:26 · 208 阅读 · 0 评论 -
P2894 [USACO08FEB]Hotel G
传送门一个NNN的数组支持两种操作查询111 ~ NNN 长度最少为 xxx 连续的 111将区间 [l,r][l,r][l,r] 的值置为 x,x∈{0,1}x,x \in \{0,1\}x,x∈{0,1}分析这道题和【Tunnel Warfare】有点相关同样是线段树维护这里有点像,区间连续最大值了。对于每个位置,维护三个信息{k,l,r}\{k, l, r\}{k,l,r}kkk 为区间连续的111长度lll 为区间左端点向右走,有多少连续的111,也就是连续最后一个111原创 2021-08-08 15:35:09 · 182 阅读 · 0 评论 -
Tunnel Warfare
传送门NNN的数组,初始为111支持三种操作将下标为xxx 的值变为 000求与下标 xxx 相连的连续的 111 的长度恢复上一次改为 000 的操作分析线段树维护值01序列这道题和【Hotel】有点相关此题要维护x左边相连最远多少 + 右边最远多少那么我们就维护左端点和右端点最远的距离!设 lll 为区间左端点,能预见的最远到右边连续第一个000的位置设 rrr为区间右端点,能预见的最远到左边连续第一个000的位置(连续最后一个111不就是前一个嘛)假设原创 2021-08-08 15:08:40 · 127 阅读 · 0 评论 -
P1600 [NOIP2016 提高组] 天天爱跑步
传送门无根树,NNN个节点给出 MMM 条链的起点 sss 和 ttt,起点 sss 从000秒开始往 ttt 走,每秒走一个节点,每个节点有一个查看时间wiw_iwi,只有在当前查看时间看到某个刚好走到当前节点 ppp ,此时就算sss造成一点贡献求每个节点能够看到多少个分析这题和之前一道【雨天的尾巴】很像,都是对链进行某种类型的操作,然后统计这种类型的贡献思路 【树上差分】+【线段树合并】路径一般对 两个端点和lcalcalca 进行操作,这里由于有时间的限制,速度一定,就原创 2021-08-08 14:34:26 · 141 阅读 · 0 评论 -
2019 ICPC 南昌 K-tree【树上启发式合并+线段树】
传送门分析dsu on tree + 线段树给定一个有根树,每个节点有一个权值找到有多少不同的对(u,v)(u, v)(u,v)满足条件u,vu,vu,v任何一个都不是另一个的祖先节点,也就是说,u,vu,vu,v 在不同的子树里uvalue+vvalue=2∗lca(u,v)valueu_{value}+v_{value}=2*lca(u, v)_{value}uvalue+vvalue=2∗lca(u,v)valuedepu+depv−2∗deplca<=Kde原创 2021-08-07 01:10:43 · 263 阅读 · 0 评论 -
[ONTAK2010]Peaks【并查集+线段树合并】
文章目录分析代码传送门在Bytemountains有NNN座山峰,每座山峰有他的高度hih_ihi。有些山峰之间有双向道路相连,共MMM条路径,每条路径有一个困难值,这个值越大表示越难走,现在有QQQ组询问,每组询问询问从点vvv开始只经过困难值小于等于xxx的路径所能到达的山峰中第kkk高的山峰的高度,如果无解输出−1-1−1。小声嘀咕原题面中,没有说输出高度,以为是要输出第k高山峰的编号,但是我想着会不会出现并列的情况,要输出多个,一看,竟然没有说,那就先理解为输出高度吧。(输出编号要考虑更原创 2021-08-07 00:35:41 · 187 阅读 · 0 评论 -
异或树-线段树合并
文章目录分析代码传送门题面信息有一棵n个节点的异或树,111号点为根,每个节点有一个权值wiwiwi。每次询问给出uuu,xxx,询问子树uuu内,点的权值大于x的所有权值异或xxx的和。由于这是一棵异或树,所以,如果一个数出现了两次,那么这两个点的权值就消失了(点并没有消失,即树的形态没有发生变化,只是在计算时忽略这两个点的权值。)消失过程发生在一次询问时,如果子树内两个点的权值一样,那么这两个点的权值同时消失,直到无法再有点对消失后查询。分析在子树内,一个值出现了偶数次就不被计算,视为不可原创 2021-08-07 00:14:01 · 310 阅读 · 0 评论