合集-算法笔记
摘要:是一种数据结构,常用于解决元素分组的问题 管理一系列不相交的集合,支持合并和查询两种操作 主要思想:用集合的一个元素代表集合,即祖宗代表家族 若是了解一些图论基础,可以发现并查集类似于一棵树,根节点就是祖宗,子节点就是集合的其他元素 基础代码 int f[N]; void init(int n) {
阅读全文
摘要:问题描述 给定一个序列a{1}, a{2}, a{3}, ... , a{n},如何求出该序列的最大子段和?(询问的区间个数为m) 分析 解决方案: 暴力统计:对于每一个区间[l, r],每一次选定一个子段的起点,然后枚举子段的长度,时间复杂度为O(mn^{2})。 动态规划:我们一次性算出所有的区
阅读全文
摘要:又名函数式线段树。(这不重要) 一个数据结构,能访问到历史版本的数据,常用于可持久化和区间K大值,是线段树的一个升级版。专门用于区间第K大值查询问题。 主席树是可持久化线段树的一种特殊实现。 原理 首先我们要将所有数字离散化。 主席树相当于是在每个位置维护了一个线段树,线段树的节点是一个区间[x,
阅读全文
摘要:最短路径 单源最短路:已知起点,求到达其它点的最短路径 常用:Dijkstra算法、Bellman-Ford算法、SPFA算法 多源最短路:求任意两点之间的最短路径 常用:Floyd算法 上述算法介绍,推荐文章:http://t.csdnimg.cn/IuCsu Dijkstra(迪杰斯特拉
阅读全文

浙公网安备 33010602011771号