"题目链接" cpp / 序列上的主席树 某点是利用前一个点的根建树 同理 树上的主席树 某个节点可以利用其父节点(is unique)的根建树 排名可以利用树上前缀和求得: 对于(u,v),w=LCA(u,v),u v这条链的值就是 sum "u root]+sum[v root] sum[w r ...
分类:
其他好文 时间:
2018-02-12 11:10:30
阅读次数:
185
题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 输入输出格式 输入格式: 第一行两个整数N,M。 第二行有N个整数,其中第i个整数 ...
分类:
其他好文 时间:
2018-02-10 20:08:17
阅读次数:
158
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2588 知识点: 可持久化线段树 解题思路: 先建一棵空的权值线段树,然后按照题目给出的树以任意一点为根的\(DFS\)序来更新这棵线段树。询问\((u,v,k)\)时,其实就是查询\(T[u ...
分类:
其他好文 时间:
2018-01-27 20:16:34
阅读次数:
154
题目: 求树上两点之间第k小点权 题解: 对每个节点到根节点的路径建一棵线段树,这样每个点的线段树都从他父亲得到 对于询问(u,v),sum[u]+sum[v]-sum[lca]-sum[fa[lca]]可以表示u到v的路径 ...
分类:
其他好文 时间:
2017-12-31 20:56:43
阅读次数:
159
Spoj 10628. Count on a tree Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 给定一棵N个 ...
分类:
其他好文 时间:
2017-12-13 23:56:19
阅读次数:
271
"BZOJ 2588" Count on a tree 题面 求树上两点之间路径上第k大的点权。 题解 一开始看到这道题觉得是树剖,然后又听说是主席树,然后以为是主席树+树剖,差点没吓死…… 然后发现,如果每个点都挂一棵主席树,每棵都通过修改父亲的主席树得到,这样当询问路径(u, v)时,u的主席树 ...
分类:
其他好文 时间:
2017-12-08 21:10:43
阅读次数:
211
[luogu P2633] Count on a tree 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 输入输出格式 输入格式 ...
分类:
其他好文 时间:
2017-12-02 11:29:16
阅读次数:
159
You are given a tree with N nodes. The tree nodes are numbered from 1 to N. Each node has an integer weight. We will ask you to perform the following ...
分类:
其他好文 时间:
2017-11-25 23:43:02
阅读次数:
158
bzoj 3932 [CQOI2015]任务查询系统 √ 洛谷 P2633 Count on a tree ...
分类:
其他好文 时间:
2017-11-16 00:52:39
阅读次数:
152
#include<iostream> #include<cstdio> #include<algorithm> #include<set> #include<string.h> #define MAXN 1000100 #define ll long long using namespace std ...
分类:
其他好文 时间:
2017-10-11 23:53:00
阅读次数:
192