- 博客(9)
- 收藏
- 关注
转载 树上分治
相关链接: 国家集训队论文2009: 漆子超《分治算法在树的路径问题中的应用》 点分治: 首先选取一个点将无根树转为有根树,再递归处理每一颗以根结点的儿子为根的子树。 [POJ1741]Tree [SPOJ1825]FTOUR2 边分治: 在树中选取一条边,将原树分成两棵不相交的树,递归处理。 [SPOJ2666]QTREE4 路径剖分: 这里主要是重链剖分。 记点\(size_...
2019-06-09 13:48:00
191
转载 [SPOJ2666]QTREE4
这题是可以点分治或LCT作的。。但这里讲边分治的做法。。 和点分治类似,边分治利用一条树上路径要吗经过一条边,要么不经过。而不经过的路径必然会在一次分治中变为经过的。 我们找到一条中心边,边左边和边右边分别建一个大根堆。左边的堆中存储边的左子树中白点的深度,右边的堆储存右边的。 当发生颜色反转时,若为黑点转白点,则去掉标记,并将点压入相应的堆中。若为白点转为黑点,则将其打上标记。 统计时...
2019-06-09 01:02:00
167
转载 [SPOJ375]QTREE
这题可能是QZC论文中最板子的题了。。 我们只需要把边权记在比边深的点上,然后便就是树链剖分的板子了。。 由于题目卡语言。。以下代码需要转C才能过。。 #include <bits/stdc++.h> using namespace std; const int N = 10005; int dep[N],siz[N],fa[N],id[N],son[N],val[N],...
2019-06-09 00:11:00
152
转载 [SPOJ1825]FTOUR2
我们知道,树上两个点的LCA要么是当前根节点,要么不是。。所以两个点间的最短路径要么经过当前根节点,要么在一棵当前根节点的子树中。。 考虑点分治,于是在原来同一子树中的两个点必然在一次分治中变为路径经过当前根节点的两个点。 点分治标准开头(雾 对于路径经过当前根节点的点。从当前根到点\(i\)的路径上经过的拥挤点数为\(num_i\),路径长度为\(d_i\)。求这两个值简单\(dfs\...
2019-06-08 23:24:00
131
转载 [POJ1741]Tree
我们知道,树上两个点的LCA要么是当前根节点,要么不是。。所以两个点间的最短路径要么经过当前根节点,要么在一棵当前根节点的子树中。。 考虑点分治,于是在原来同一子树中的两个点必然在一次分治中变为路径经过当前根节点的两个点。 处理路径经过当前根节点的两个点的情况。对于当前树,每个节点(根节点除外)记录深度\(dep_i\)(根节点深度为\(0\))和除当前根节点外的最远祖先\(fa_i\)...
2019-06-07 21:29:00
115
转载 [LG-P5350]序列
必要的前置知识: [CF876C]Willem, Chtholly and Seniorious(ODT) 操作\(1,2,3\)就是原题。。不讲了。。 操作\(4,5,6\) 把ODT的set中的那一段点存入一个vector,然后把两边的左右端点换一下,在插入就好了。。 只不过在操作时要时刻注意ODT的先右后左原则。。 开\(O_2\)才能过。。喔太菜了。。 #include<...
2019-06-02 14:14:00
210
转载 [COCI 2014/2015 #3]KAMIONI
难得的没人做的水紫题。。 我的做法: 首先我们应该将每一辆车的转折点按照发生时间来排序。将所有不重复的查询都保存在拐点少的那个的名下。然后枚举每一个拐点就可以了。 这里是官方题解: 预处理每一个辆车的每一个转折点,以及方向,并且按照时间排序。 对于卡车i,绑定与它有查询关系的卡车,保存的时候保证i的转折点要小于与它绑定的其他卡车。显然,如果i的转折点大于某一辆卡车,它会被另外一辆卡车绑...
2019-05-26 13:33:00
280
转载 [SHOI2014]神奇化合物
看一眼就知道是动态图吖(口胡.jpg 以上纯属假消息。。。 其实这题是一道明显的技(xia)巧(gao)题,我们发现询问数远小于边数,这表明有一些边是一直存在的。。于是我们可以离线做,,对一直存在的边组成的图进行缩点,然后就开始暴力维护添边和删边即可。。注意用计数器纪录一下重边,而不是不停的加边即可。。 最好再判一下自环,,有人已经造出有自环的hack数据惹。。似乎还卡掉了不少人。。 #...
2019-05-26 13:31:00
442
转载 [GXOI/GZOI2019]旧词
相关链接(雾:[LNOI2014]LCA 实际上这题就是加了一个幂。。原题爆破比赛 原题:当\(k=1\)时 暴力:求LCA再求深度。。然后观察一下求LCA的方法。。最暴力的方法就是把根节点到节点\(i\)的路径上的点都打上标记,然后由节点\(y\)往上,直到一个有标记的点为止。。 然而这题并不需要求LCA的序号,只需要深度,于是对于每个询问中\([1,x]\)的每个节点\(i\),把上...
2019-05-26 13:28:00
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅