题意 给定一颗带点权有根树,每次查询两点之间路径上点权的第$k$大值 解法 求第$k$大?我们立刻想到主席树 但是这是树上的问题,我们怎么进行操作呢? 我们令每一颗主席树维护当前节点到根节点路径上的点权,那么每个点的主席树都由其父亲转移过来 那么怎么查询$x,y$两个结点路径上的第$k$大点权呢? ...
分类:
其他好文 时间:
2019-09-05 22:59:29
阅读次数:
80
Count on a tree SPOJ 主席树+LCA(树链剖分实现)(两种存图方式) 题外话,这是我第40篇随笔,纪念一下。 include include include using namespace std; const int maxn=1e5+100; struct node{ int ...
分类:
其他好文 时间:
2019-08-29 23:56:56
阅读次数:
225
题意:求树上A,B两点路径上第K小的数 AT ...
分类:
其他好文 时间:
2019-08-28 13:04:39
阅读次数:
70
"参考博客" 对于树上的路径询问问题 O(1)的时间加入或删除一个点的贡献 $O(n\sqrt n)$的复杂度求出所有询问的答案 对树上的结点进行分块,离线询问后排序,顺序遍历暴力转移路径(转移时加入或删除路径上的点的贡献即可)。 关于转移路径:首先定义路径:设$T_u$为$u$ 到根的路径上边的集 ...
分类:
其他好文 时间:
2019-08-09 21:41:23
阅读次数:
161
题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u ...
分类:
其他好文 时间:
2019-07-28 19:36:08
阅读次数:
136
[SPOJ COT]Count on a tree 题面 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 ...
分类:
其他好文 时间:
2019-05-07 16:59:52
阅读次数:
205
题意:n个点的树,每个点有权值,问你u~v路径第k小的点的权值是? 思路: 树上主席树就是每个点建一棵权值线段树,具体看jq博客,LCA用倍增logn求出,具体原理看这里 LCA板子: 代码: ...
分类:
其他好文 时间:
2019-04-24 00:22:40
阅读次数:
160
题目大意:给定一棵 N 个节点的无根树,每个节点有一个颜色。现有 M 个询问,每次询问一条树链上的不同颜色数。 题解:学会了树上莫队。 树上莫队是将节点按照欧拉序进行排序,将树上问题转化成序列上的问题进行求解的算法。需要分两种情况进行讨论,第一种情况是对于询问 x,y 来说,x 为 y 的祖先,则询 ...
分类:
其他好文 时间:
2019-04-07 12:42:37
阅读次数:
128
题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v),你需要回答u xor lastans和v这两个节点间有多少种不同的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 输入格式 第一行两个整数N,M。 第二行有N个整数,其中第i个整数表示点i的权值 ...
分类:
其他好文 时间:
2019-01-31 21:34:28
阅读次数:
202
思路 运用树上差分的思想,转化成一个普通的主席树模型即可求解 代码 cpp include include include using namespace std; struct Node{ int lson,rson,sz; }pt[100100 30]; const int MAXlog=19; ...
分类:
其他好文 时间:
2018-12-30 11:45:39
阅读次数:
208