随笔分类 -  数据结构——主席树

摘要:Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数。 例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = 4+1+1 7 = 4+1+1+1 8无法表示为集合S的子集的和,故集合S的神秘数 阅读全文
posted @ 2018-03-30 21:21 void_f 阅读(149) 评论(0) 推荐(0)
摘要:Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文 Solution 类似区间第K大,主席树套个LCA就行了 对于树上两个 阅读全文
posted @ 2018-02-04 21:40 void_f 阅读(193) 评论(0) 推荐(0)
摘要:Description 给一个长度为n的序列a。1≤a[i]≤n。m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r l+1)/2。如果存在,输出这个数,否则输出0。 Solution 用主席树处理即可, 由于按值建树,其实只要不断判断左右子树子节点数量大于(r l 阅读全文
posted @ 2018-02-04 16:46 void_f 阅读(298) 评论(0) 推荐(0)
摘要:Desciption 题意:求区间第K小(N include define N 100010 using namespace std; int n,m,A[N],rank[N],T[N],ls[N 20],rs[N 20],sum[N 20],tot; inline int read(){ int 阅读全文
posted @ 2018-02-04 16:13 void_f 阅读(246) 评论(0) 推荐(0)
摘要:Description 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[2], …, A[2k 1]的中位数。即前1,3,5,……个数的中位数。 N ≤ 100000 Solution 这题方法很多,这里介绍splay的打法 求中位数即求第 阅读全文
posted @ 2018-01-30 20:03 void_f 阅读(198) 评论(0) 推荐(0)
摘要:Description 给定一个含有N个数的序列$A_1,A_2,A_3……A_n$,程序必须回答这样的询问:对于给定的i,j,k,在$A_i,A_{i+1},A_{i+2}...A_j$中第k大的数是多少(1≤k≤j i+1)。你需要编一个这样的程序,从输入文件中读入序列a,读入一系列的指令,对于 阅读全文
posted @ 2018-01-30 16:58 void_f 阅读(171) 评论(0) 推荐(0)