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

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

摘要:给定长为n的序列Ai,两种操作: 1. 将某个数Ai修改为v。 2. 查询用区间[l,r]内的数不能组成的最小的数(能组成v是指存在一个[l,r]的子集s使s的和等于v)。 n,Ai2×105阅读全文
posted @ 2020-12-05 21:58 SovietPower 阅读(158) 评论(2) 推荐(1) 编辑
摘要:维护一棵树,有两种操作: 1.Add x,y,插入一个节点,父节点为x边权为y。 2.Query x,y,查询起点为x,终点在y的子树中的最大简单路径边权异或和。 阅读全文
posted @ 2020-10-19 10:10 SovietPower 阅读(110) 评论(0) 推荐(0) 编辑
摘要:"题目链接 BZOJ" "洛谷" 区间第k小,我们可以想到主席树。然而这是静态的,怎么支持修改? 静态的主席树是利用前缀和+差分来求解的,那么对于每个位置上的每棵树看做一个点,拿树状数组更新。 还是树状数组的过程,区间加时,每到一个位置在这棵主席树中插入这个数。 查询时,将所有询问要访问到的主席树存 阅读全文
posted @ 2018-03-26 21:13 SovietPower 阅读(338) 评论(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 阅读(254) 评论(0) 推荐(0) 编辑
摘要:题目链接: "BZOJ" "洛谷" O(n2)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 阅读(393) 评论(1) 推荐(1) 编辑
摘要:"题目链接" or "Here" 题意:n个数,有两个操作:1.修改某个数为v;2.询问一段区间第k小的数 如果没有修改,则可以用线段树,每个节点P[a,b]存储大小为b a+1的数组,代表其中的数 同时,这个数组还是要排好序的 直接找答案很不方便,于是考虑对数组二分答案,求比它小的数的个数 关于构 阅读全文
posted @ 2018-02-09 12:56 SovietPower 阅读(275) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示