摘要: 相关链接: "国家集训队论文2009: 漆子超《分治算法在树的路径问题中的应用》" 点分治: 首先选取一个点将无根树转为有根树,再递归处理每一颗以根结点的儿子为根的子树。 "[POJ1741]Tree" "[SPOJ1825]FTOUR2" 边分治: 在树中选取一条边,将原树分成两棵不相交的树,递归 阅读全文
posted @ 2019-06-09 13:48 蒟蒻SLS 阅读(189) 评论(0) 推荐(1) 编辑
摘要: 这题是可以点分治或LCT作的。。但这里讲边分治的做法。。 和点分治类似,边分治利用一条树上路径要吗经过一条边,要么不经过。而不经过的路径必然会在一次分治中变为经过的。 我们找到一条中心边,边左边和边右边分别建一个大根堆。左边的堆中存储边的左子树中白点的深度,右边的堆储存右边的。 当发生颜色反转时,若 阅读全文
posted @ 2019-06-09 01:02 蒟蒻SLS 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 这题可能是QZC论文中最板子的题了。。 我们只需要把边权记在比边深的点上,然后便就是树链剖分的板子了。。 由于题目卡语言。。以下代码需要转C才能过。。 cpp include using namespace std; const int N = 10005; int dep[N],siz[N],fa 阅读全文
posted @ 2019-06-09 00:11 蒟蒻SLS 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 我们知道,树上两个点的LCA要么是当前根节点,要么不是。。所以两个点间的最短路径要么经过当前根节点,要么在一棵当前根节点的子树中。。 考虑点分治,于是在原来同一子树中的两个点必然在一次分治中变为路径经过当前根节点的两个点。 ~~点分治标准开头(雾~~ 对于路径经过当前根节点的点。从当前根到点$i$的 阅读全文
posted @ 2019-06-08 23:24 蒟蒻SLS 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 我们知道,树上两个点的LCA要么是当前根节点,要么不是。。所以两个点间的最短路径要么经过当前根节点,要么在一棵当前根节点的子树中。。 考虑点分治,于是在原来同一子树中的两个点必然在一次分治中变为路径经过当前根节点的两个点。 处理路径经过当前根节点的两个点的情况。对于当前树,每个节点(根节点除外)记录 阅读全文
posted @ 2019-06-07 21:29 蒟蒻SLS 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 必要的前置知识: "[CF876C]Willem, Chtholly and Seniorious" (ODT) 操作$1,2,3$就是原题。。不讲了。。 操作$4,5,6$ 把ODT的set中的那一段点存入一个vector,然后把两边的左右端点换一下,在插入就好了。。 只不过在操作时要时刻注意OD 阅读全文
posted @ 2019-06-02 14:14 蒟蒻SLS 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 难得的没人做的水紫题。。 我的做法: 首先我们应该将每一辆车的转折点按照发生时间来排序。将所有不重复的查询都保存在拐点少的那个的名下。然后枚举每一个拐点就可以了。 这里是官方题解: 1. 预处理每一个辆车的每一个转折点,以及方向,并且按照时间排序。 2. 对于卡车i,绑定与它有查询关系的卡车,保存的 阅读全文
posted @ 2019-05-26 13:33 蒟蒻SLS 阅读(172) 评论(0) 推荐(0) 编辑
摘要: ~~看一眼就知道是动态图吖(口胡.jpg~~ 以上纯属假消息。。。 其实这题是一道明显的技(xia)巧(gao)题,我们发现询问数远小于边数,这表明有一些边是一直存在的。。于是我们可以离线做,,对一直存在的边组成的图进行缩点,然后就开始暴力维护添边和删边即可。。注意用计数器纪录一下重边,而不是不停的 阅读全文
posted @ 2019-05-26 13:31 蒟蒻SLS 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 相关链接(雾: "[LNOI2014]LCA" 实际上这题就是加了一个幂。。~~原题爆破比赛~~ 原题:当$k=1$时 暴力:求LCA再求深度。。然后观察一下求LCA的方法。。最暴力的方法就是把根节点到节点$i$的路径上的点都打上标记,然后由节点$y$往上,直到一个有标记的点为止。。 然而这题并不需 阅读全文
posted @ 2019-05-26 13:28 蒟蒻SLS 阅读(174) 评论(0) 推荐(0) 编辑