spoj
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【spoj】【COT - Count on a tree】【可持久化线段树】
题目大意给出一棵树,询问两点路径上第k大点权是什么。解题思路自上到下建可持久化线段树,维护当前点到根的信息,使用权值线段树记录size,查询的时候两端的值减去lca和lca的父亲的值即当前路径的权值线段树,即可求解。code#include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LF double原创 2017-02-16 22:33:29 · 426 阅读 · 0 评论 -
【spoj】【COT2 - Count on a tree II】【莫队算法】
题目大意给出一棵树,每个点有点权,询问两点之间的路径有多少种不同的权值。解题思路观察可知,一般的算法无法解决这个问题,我们考虑传说中的暴力算法莫队算法。求出dfs序,将左端点按sqrt(n)一块分块为第一关键字,将右端点为第二关键字排序。可以发现这样做之后左端点每次不会移动超过sqrt(n)位,而右端点会被分成sqrt(n)个单调序列,每个序列移动不会超过n,这样我们就可以在n sqrt(n)解决这原创 2017-02-18 16:12:38 · 546 阅读 · 0 评论 -
【spoj】【QTREE2 - Query on a tree II】
题目大意给出一棵树,每条边有边权,询问两点之间的距离,以及从起点到终点第k个点是那个点。解题思路观察可知,整个询问是静态的,可以使用倍增算法解决。code#include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LF double #define LL long long #define Min(a,原创 2017-02-18 18:48:18 · 325 阅读 · 0 评论