1. 离线算法 http://hihocoder.com/problemset/problem/1067 并查集 2. 在线算法 http://hihocoder.com/problemset/problem/1069 最近公共祖先无非就是两点连通路径上高度最小的点 求每个结点所在层数,先序遍历树记 ...
分类:
其他好文 时间:
2016-04-07 20:41:10
阅读次数:
231
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3320 离线算法RE了.. ...
分类:
其他好文 时间:
2016-04-03 17:16:27
阅读次数:
198
Tarjan离线算法,相当于就是把整个树给DFS了一遍。DFS的同时,处理关于当前节点的询问。复杂度就是:O(n + q),n为总结点数,q为询问结点对数。 具体是怎么一回事呢。 看一下这个画个图理解一下就好了。 是的,感觉看完这个之后什么都记起来了。
分类:
其他好文 时间:
2016-03-21 20:08:42
阅读次数:
297
hdu 1171 Big Event in HDU 题意:给定N种物品的价值v和数量num;要你尽可能实现二分,输出a,b(a>=b);种类最多50种,每种价值和个数均不超过50; 分析:离线算法,以总价值的一般为V(背包的容量),去装下最大重量的物品即b,这样其补就是a; V最大为1e5的数量级,
分类:
其他好文 时间:
2016-02-20 00:24:52
阅读次数:
251
学习博客: http://noalgo.info/476.html 讲的很清楚! 对于一颗树,dfs遍历时,先向下遍历,并且用并查集维护当前节点和父节点的集合。这样如果关于当前节点(A)的关联节点(B)(及要求的最近祖先的另一个点)之前被访问过,那么 B可定已经属于一个集合,先前对于访问过的点,已经
分类:
编程语言 时间:
2016-02-11 00:30:12
阅读次数:
260
题意:一个村子有n个房子,他们用n-1条路连接起来,每两个房子之间的距离为w。有m次询问,每次询问房子a,b之间的距离是多少。分析:近期公共祖先问题,建一棵树,求出每一点i到树根的距离d[i],每次询问a。b之间的距离=d[a]+d[b]-2*d[LCA(a,b)];LCA(a,b)是a,b的近期公...
分类:
编程语言 时间:
2015-12-22 13:06:25
阅读次数:
200
1、一颗树中,给出a,b,求最近的距离。(我没考虑不联通的情况,即不是一颗树的情况)2、用最近公共祖先来求,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u, v)]3、/*离线算法,LCATarjan复杂度O(n+Q);*/#in...
分类:
编程语言 时间:
2015-11-14 01:04:19
阅读次数:
269
1、输出测试用例中是最近公共祖先的节点,以及这个节点作为最近公共祖先的次数。2、最近公共祖先,离线Tarjan算法3、/*POJ 1470给出一颗有向树,Q个查询输出查询结果中每个点出现次数*//*离线算法,LCATarjan复杂度O(n+Q);*/#include#include#includeu...
分类:
编程语言 时间:
2015-11-13 20:56:54
阅读次数:
329
离线算法:先将所有涉及到的串建成字典树,然后用线段树维护dfs序,时间复杂度$O(m\log L)$。在线算法:用替罪羊树动态维护Trie树的dfs序即可,时间复杂度$O(L\log L)$。#include#include#includeusing namespace std;const int ...
分类:
其他好文 时间:
2015-10-12 22:38:24
阅读次数:
305
LCA tarjan 离线算法#include #include #include using namespace std;const int maxn = 40010;int first[maxn], head[maxn], cnt, sum;struct edge{ int u, v, w, n...
分类:
其他好文 时间:
2015-09-28 15:53:59
阅读次数:
176