摘要: 题面 题意:给你一个数组a[n],对于数组每次建立一个完全k叉树,对于每个节点,如果父节点的值比这个节点的值大,那么就是一个违规点,统计出1~n 1完全叉树下的违规点的各自的个数。 分析 注意到完全k叉树的一个性质,v节点的儿子是k (v 1)+2...kv+1,v节点的父亲为(v+k 2)/k 那 阅读全文
posted @ 2019-05-12 12:10 birchtree 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 题面 单点修改,区间求第k大 分析 首先,这道题卡权值线段树套treap的做法,所以只能用主席树做 对于静态的查询,root[i]对应的主席树的区间[l,r]保存的是a[1]~a[i]有多少个值落在区间[l,r]内。如果我们要修改a[i],则要修改O(n)棵主席树。那么我们像树状数组那样维护n棵主席 阅读全文
posted @ 2019-05-12 11:54 birchtree 阅读(241) 评论(3) 推荐(1) 编辑
摘要: 题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那么查询我们直接在第i棵主席树里查第k大即可 注意: 1.主席树里面要维护两个值,一个是值落在区间[l 阅读全文
posted @ 2019-05-12 11:51 birchtree 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题面 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 分析 第i棵主席树存储dfs序(dfn)为i的节点到根的链上序列,按dfn更新 查询用 阅读全文
posted @ 2019-05-12 11:50 birchtree 阅读(180) 评论(0) 推荐(0) 编辑