博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

随笔分类 -  高级数据结构——树套树

摘要:给定长为$n$的序列$A_i$,两种操作: 1. 将某个数$A_i$修改为$v$。 2. 查询用区间$[l,r]$内的数不能组成的最小的数(能组成$v$是指存在一个$[l,r]$的子集$s$使$s$的和等于$v$)。 $n,A_i\leq 2\times10^5$。 阅读全文
posted @ 2020-12-05 21:58 SovietPower 阅读(171) 评论(2) 推荐(1)
摘要:维护一棵树,有两种操作: 1.Add x,y,插入一个节点,父节点为$x$边权为$y$。 2.Query x,y,查询起点为$x$,终点在$y$的子树中的最大简单路径边权异或和。 阅读全文
posted @ 2020-10-19 10:10 SovietPower 阅读(134) 评论(0) 推荐(0)
摘要:"题目链接 BZOJ" "洛谷" 区间第k小,我们可以想到主席树。然而这是静态的,怎么支持修改? 静态的主席树是利用前缀和+差分来求解的,那么对于每个位置上的每棵树看做一个点,拿树状数组更新。 还是树状数组的过程,区间加时,每到一个位置在这棵主席树中插入这个数。 查询时,将所有询问要访问到的主席树存 阅读全文
posted @ 2018-03-26 21:13 SovietPower 阅读(351) 评论(0) 推荐(0)
摘要:"题目链接" 下落一个d s的方块,则要在这个平面区域找一个最高的h' 更新整个平面区域的值为h+h' 对于本题,维护最大高度h和all 对于平面的x轴维护一棵线段树t1,每个t1的节点维护对应y轴的两棵线段树t2(h和all) (同一维,需要维护独立的两棵线段树) t1要用标记永久化实现,t2普通 阅读全文
posted @ 2018-02-12 12:34 SovietPower 阅读(273) 评论(0) 推荐(0)
摘要:题目链接: "BZOJ" "洛谷" $O(n^2)$DP很好写,对于当前的i从之前满足条件的j中选一个最大值,$dp[i]=d[j]+1$ cpp for(int j=1; j include include define gc() getchar() define now node[rt] def 阅读全文
posted @ 2018-02-11 10:45 SovietPower 阅读(405) 评论(1) 推荐(1)
摘要:"题目链接" or "Here" 题意:n个数,有两个操作:1.修改某个数为v;2.询问一段区间第k小的数 如果没有修改,则可以用线段树,每个节点P[a,b]存储大小为b a+1的数组,代表其中的数 同时,这个数组还是要排好序的 直接找答案很不方便,于是考虑对数组二分答案,求比它小的数的个数 关于构 阅读全文
posted @ 2018-02-09 12:56 SovietPower 阅读(289) 评论(0) 推荐(0)