题意:求一条链 $(u,v)$ 上不同的颜色数。 我们可以求出树的出栈入栈序(or 括号序?我也不确定)。 图(from "attack" ) 然后有一个很优美的性质: 设点 $u$ 的入栈时间为 $dfn[u]$ ,出栈时间为 $low[u]$ 设两个点 $u,v$ 满足 $dfn[u] incl ...
分类:
其他好文 时间:
2019-11-23 21:47:05
阅读次数:
74
"参考博客" 对于树上的路径询问问题 O(1)的时间加入或删除一个点的贡献 $O(n\sqrt n)$的复杂度求出所有询问的答案 对树上的结点进行分块,离线询问后排序,顺序遍历暴力转移路径(转移时加入或删除路径上的点的贡献即可)。 关于转移路径:首先定义路径:设$T_u$为$u$ 到根的路径上边的集 ...
分类:
其他好文 时间:
2019-08-09 21:41:23
阅读次数:
161
题目大意:给定一棵 N 个节点的无根树,每个节点有一个颜色。现有 M 个询问,每次询问一条树链上的不同颜色数。 题解:学会了树上莫队。 树上莫队是将节点按照欧拉序进行排序,将树上问题转化成序列上的问题进行求解的算法。需要分两种情况进行讨论,第一种情况是对于询问 x,y 来说,x 为 y 的祖先,则询 ...
分类:
其他好文 时间:
2019-04-07 12:42:37
阅读次数:
128
树上莫队 引入 树上莫队看名字就知道,其实是把莫队搬到了树上。一般来说,这种问题有几个特征: 询问可以离线 答案并不好用树形DP或者数据结构维护,往往只能暴力跑到所有的点求。 我们拿一道例题: "SP10707 COT2" 这样的话,我们很容易就想到需要用莫队。可是莫队算法是基于一个序列的,我们怎么 ...
分类:
其他好文 时间:
2019-02-17 10:32:37
阅读次数:
196
题目分析: 考虑欧拉序,这里的欧拉序与ETT欧拉序的定义相同而与倍增LCA不同。然后不妨对于询问$u$与$v$让$dfsin[u] \leq dfsin[v]$,这样对于u和v不在一条路径上,它们可以改成询问$dfsin[u]$到$dfsin[v]$。否则改成$dfsout[u]$到$dfsin[v ...
分类:
其他好文 时间:
2018-08-28 10:32:08
阅读次数:
221
题目描述 给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数。 输入格式 第一行有两个整数n和m(n=40000,m=100000)。 第二行有n个整数。第i个整数表示第i个节点表示的整数。 在接下来的n-1行中,每行包含两个整数u v,描述一条边(u,v)。 在接下来的 ...
分类:
其他好文 时间:
2018-06-24 21:07:11
阅读次数:
144
Discription 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 th ...
分类:
其他好文 时间:
2018-05-21 17:53:53
阅读次数:
226
题意:求$u$到$v$的最短路径的不同权值种类个数 树上莫队试水题 该解释的我在上一篇文章就解释了 ...
分类:
其他好文 时间:
2018-05-17 00:57:19
阅读次数:
152
题意; 一棵N个节点的树,有点权。M次询问,每次询问点(u,v)路径上有多少个权值不同的点。 题解: 树上开莫队,分块方法可以参照BZOJ1086题的方式。按照询问点(u,v)所在块将询问进行排序。更新路径时用vis数组标记路径上的点是否访问过。 #include <bits/stdc++.h> u ...
分类:
其他好文 时间:
2018-04-29 22:13:06
阅读次数:
189
题意 给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数。 n=40000,m=100000 Sol 树上莫队模板题 cpp include define RG register define IL inline define Fill(a, b) memset(a, b ...
分类:
其他好文 时间:
2018-04-06 10:54:19
阅读次数:
170