dp 太弱,先补动规专题…
在 OI 中,我们手写的数据结构几乎都是静态内存的,而 STL 中的容器由于内存动态化的原因在做题中容易 TLE,这里介绍几种常见容器静态化内存的方法。
k-d 树(k-dimensional tree)是在 $k$ 维欧几里德空间组织点的数据结构。k-d 树可以使用在多种应用场合,如多维键值搜索(例:范围搜寻及最邻近搜索)。k-d 树 是空间二分树(Binary space partitioning)的一种特殊情况。而在算法竞赛中,k-d树往往用于在二维平面内的信息检索,这里主要指二维 k-d 树。
求解最小费用流的算法有很多,如增广路算法(SPFA),消圈算法,zkw 算法,Primal Dual 算法及网络单纯形,其中消圈算法和网络单纯形较为通用但速度不够快或编程复杂度过高,SPFA 和 zkw 在不同的图上各有所长,这里介绍不容易被卡掉的 Primal Dual 算法。
注意: Primal Dual 算法也不能适用于存在负圈的图。
求解网络流最大流问题有很多算法,ISAP 是图论求最大流的算法之一,它很好的平衡了运行时间和程序复杂度之间的关系,因此性价比很高。
而 HLPP 算法理论复杂度十分优秀,在实际运用中由于上界更紧而并不一定会快于 ISAP,但是 HLPP 在分层图中表现十分出色,甚至比在分层图上复杂度为 $O(n^2)$ 的 MPM 算法还快。
这里简单的给出这两个算法的思想以及代码实现。
给你一棵 $n$ 个点的无根树。
树上的每条边具有颜色。一共有 $m$ 种颜色,编号为 $1$ 到 $m$。第 $i$ 种颜色的权值为 $c_i$。
对于一条树上的简单路径,路径上经过的所有边按顺序组成一个颜色序列,序列可以划
分成若干个相同颜色段。定义路径权值为颜色序列上每个同颜色段的颜色权值之和。
请你计算,经过边数在 $l$ 到 $r$ 之间的所有简单路径中,路径权值的最大值。
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义,这里给出常见的几种实现方式,以及它们性能的比较,然后再给出几种优化,这里的优化是针对 $O(n^3)$ 朴素矩阵乘法的优化,因为朴素算法更容易利用硬件进行优化。
Update your browser to view this website correctly. Update my browser now