这题也是一眼标算..... 先搞一次dfs,把树转换成序列,对每个节点看子树的中位数,也就是看某段区间的中位数,这样就可以主席树求区间第k大值解决。 注意:询问的次数有1000000次,每次去询问会TLE的。注意到询问的种类只有100000种,所以之前询问过的可以0(1)得到,或者直接处理出每一种询 ...
分类:
其他好文 时间:
2016-05-01 16:03:30
阅读次数:
181
传送门 LCA+主席树(可持久化线段树) 取一个点为根,每棵线段树记录树上节点到根的链上的权在数轴上的分布(当然要离散化), 则对于两个点u,v的路径上的数在数轴上的分布可以表示为tree[u]+tree[v]-tree[lca(u,v)]-tree[fa(u,v)](可以随便画图YY一下), 然后 ...
分类:
其他好文 时间:
2016-04-28 09:27:54
阅读次数:
166
%ad大神的脑洞,这题是强制在线版的HH的项链 所以可以考虑树套树,和主席树之类的做法 对于每个点,可以将这个点的颜色上一次出现的位置插入到主席树里,对于每一个 l ~ r 的询问, l 到 r 之间有多少颜色上一次出现的位置在0 到 l-1 内就是答案 1 #define MAXN 500010U ...
分类:
其他好文 时间:
2016-04-28 07:04:16
阅读次数:
470
用主席树维护DFS序来支持询问某个点的子树中第$k$小的编号。 然后建出模板树和缩块之后的树。 如果两个点在同一个树块内,那么答案就是它们在模板树上的距离。 否则先在缩块后的树上求出块顶之间的距离,然后加上内部距离。 时间复杂度$O(n\log n)$。 ...
分类:
其他好文 时间:
2016-04-19 19:12:36
阅读次数:
170
首先对于查询操作就是裸的COT QAQ 在树上DFS建出主席树就可以了 对于连接操作,我们发现并没有删除 所以我们可以进行启发式合并,每次将小的树拍扁插入大的树里并重构即可 写完了之后第一个和第二个点迷のRE 然后又重新写了一遍就A了(并不知道为什么,难道第一遍写挫了? ...
分类:
其他好文 时间:
2016-04-14 22:21:15
阅读次数:
254
2588: Spoj 10628. Count on a tree Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 ...
分类:
其他好文 时间:
2016-04-13 23:38:56
阅读次数:
237
K-th Number Description You are working for Macrohard company in data structures department. After failing your previous task about key insertion you ...
分类:
其他好文 时间:
2016-04-13 20:19:27
阅读次数:
213
2213. K个串 ★★★★ 输入文件:bzoj_4504.in 输出文件:bzoj_4504.out 简单对比时间限制:20 s 内存限制:512 MB 【题目描述】 兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一 个连续子串,然后统计其子串中所有数字之和(注意这里重 ...
分类:
其他好文 时间:
2016-04-11 23:54:47
阅读次数:
205