最开始是打算以LCA作为第三篇算法整理的,但是由于学习LCA时发现自己的RMQ学习的不够扎实,所以先复习一下RMQ。本文感谢队友某淞的学习笔记。 最初看到RMQ模板的时候感觉好高端,感觉里面的各种数组,位移运算非常复杂。所以对于任何算法的学习我觉得都要分为以下的几步进行: 1、了解这种算法能解决什么 ...
分类:
编程语言 时间:
2016-05-04 18:40:18
阅读次数:
218
点击打开链接
题意:输入n,接下来n-1行,每行a,b,c代表a与b有一条权值为c的边,双向边,m次询问,问最短的距离使a,b,c可以联通
思路:LCA的模版题,没什么好说的,看理论的话网上好多本弱就不说了,代码有注释,有助于理解#include
#include
#include
#include
#include
#include
using namespace std;
ty...
分类:
其他好文 时间:
2016-05-03 18:41:42
阅读次数:
185
点击打开链接
题意:问两个城市是否相连,不相连输出Not connected,否则输出两个城市间的最短距离
思路:用并查集判断两个城市的连通性,如果联通则做法和LCA一样,但是注意的一点是地图不连通的话,我们要将所有点都建起来,就要加一个模拟的点,将所有图串起来,很好处理的,看一下就会了#include
#include
#include
#include
#include
#inc...
分类:
其他好文 时间:
2016-05-03 18:40:47
阅读次数:
179
点击打开链接
题意:就是问两个节点间的距离
思路:又切了一道模版水题,不解释了,看不懂变量含义的可以看我写的这篇,解释的比较详细ZOJ 3195#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3...
分类:
其他好文 时间:
2016-05-03 18:39:56
阅读次数:
118
链接: How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11204 Accepted Submission(s): ...
分类:
编程语言 时间:
2016-05-03 16:17:39
阅读次数:
207
题意:给一个有根树,一个查询节点(u,v)的最近公共祖先; 分析:最基础的LCA ...
分类:
其他好文 时间:
2016-05-02 15:29:56
阅读次数:
122
4.29(-84) bzoj 3572 世界树,感觉自己从来没有好好写过虚树,不懂单调栈那套理论,在bx2k的启发下知道了一个好写好懂的写法(就是常数大),先对要处理点的dfs序进行排序,然后两两求lca,再对所有数进行排序,感觉这个写法非常资瓷,然后这道题的关键点在于,在一条边上进行二分,好巧妙, ...
分类:
其他好文 时间:
2016-04-29 21:58:51
阅读次数:
114
传送门 LCA+主席树(可持久化线段树) 取一个点为根,每棵线段树记录树上节点到根的链上的权在数轴上的分布(当然要离散化), 则对于两个点u,v的路径上的数在数轴上的分布可以表示为tree[u]+tree[v]-tree[lca(u,v)]-tree[fa(u,v)](可以随便画图YY一下), 然后 ...
分类:
其他好文 时间:
2016-04-28 09:27:54
阅读次数:
166
讲得不错的 poj,1330 最近公共祖先的taijan离线算法,一次性批处理,然后再query 注意建边,注意访问,注意基于dfs,注意寻找根节点,并查集的运用; 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 ...
分类:
其他好文 时间:
2016-04-27 00:03:37
阅读次数:
210
题意: 给你一棵有n个节点的树,树的边权都是1. 有m次询问,每次询问输出树上所有节点离其较近结点距离的最大值。 思路: 1.首先是按照常规树形dp的思路维护一个子树节点中距离该点的最大值son_dis[i],维护非子树节点中距离该点的最大值fa_dis[i]; 2.对于每个节点维护它最大的三个儿子 ...
分类:
其他好文 时间:
2016-04-25 22:24:44
阅读次数:
260