摘要: 作用 高斯消元可以用来解线性方程组,也有一些别的用途。 算法流程 我们来看这样的一个方程组: $ x+y+z=3$ $2x+3y+z= 6$ $4x+y+2z=7$ 然后我们把每一项的系数提取出来,就得到如下的矩形 : $1 \ 1 \ 1 \ 3 $ \(2 \ 3 \ 1 \ 6\) \(4 \ 阅读全文
posted @ 2020-08-14 15:23 AuroraPolaris 阅读(137) 评论(0) 推荐(0) 编辑
摘要: ARX:我今天上午做了两个分层图最短路的题,可简单了……概念 分层图最短路是指在可以进行分层图的图上解决最短路问题。一般模型是:在图上,有k次机会可以直接通过一条边,问起点与终点之间的最短路径。 算法思路这是一个类似于DP的思路。用直接通过的边把整个图分成k个子图,其中k为可以直接通过的边的个数。在 阅读全文
posted @ 2020-08-14 15:22 AuroraPolaris 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 基本概念Hash,一般翻译做“散列”,也有直接音译为“哈希”的。那么哈希函数的是什么样的?大概就是 value = hash(key),我们希望key和value之间是唯一的映射关系。 大家使用的最多的就是哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问 阅读全文
posted @ 2020-08-14 15:21 AuroraPolaris 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 前言SPFA算法由于它上限O(NM)的时间复杂度,被卡掉的几率很大.在算法竞赛中,我们需要一个更稳定的算法:dijkstra 什么是dijkstra?dijkstra是一种单源最短路径算法,时间复杂度上限为O(n^2)(朴素),在实际应用中较为稳定;加上堆优化之后更是具有O((n+m)log^2 n 阅读全文
posted @ 2020-08-14 15:20 AuroraPolaris 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 众所周知,Eratosthenes筛的复杂度是$O(n\log\log n)$的,并非严格线性。于是有时候就要用到线性的欧拉筛。 欧拉筛的原理是这样的: 对于每一个数,我们只用它最小的质因子去筛掉它,因此每一个数只会被筛掉一次,从而保证该筛法为线性的。 在实现时,我们需要用数组$flag_{1,n} 阅读全文
posted @ 2020-08-12 15:41 AuroraPolaris 阅读(187) 评论(0) 推荐(1) 编辑
摘要: 费马小定理 在模为素数p的情况下,有费马小定理 \(a^{p-1} \equiv 1(\mod p)\) 那么$a^ \equiv a^{-1}(\mod p)$ 也就是说$a$的逆元为$a^$ #define ll long long ll ksm(ll a, ll b, ll mod) { ll 阅读全文
posted @ 2020-08-12 11:21 AuroraPolaris 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 模板题 P3378 【模板】堆 P3367 【模板】并查集 P1177 【模板】快速排序 P3383 【模板】线性筛素数 P3370 【模板】字符串哈希 P3366 【模板】最小生成树 P1226 【模板】快速幂||取余运算 P3371 【模板】单源最短路径(弱化版) P3865 【模板】ST表 P 阅读全文
posted @ 2020-08-06 21:23 AuroraPolaris 阅读(260) 评论(0) 推荐(0) 编辑
摘要: color 我们可以把染黑看成删掉这条边,那么每次相当于是,如果存在一个点有且仅有一条出边,那么把这条边也删掉,最后要删完所有的边。 那么我们考虑一个环,可以发现这个环如果一条边都不删,那么最后一定会被留下来,因为每个点都至少有两个出边。 所以,在初始的边删完之后,图一定得要无环。我们考虑一个无环的 阅读全文
posted @ 2019-10-22 15:22 AuroraPolaris 阅读(108) 评论(0) 推荐(0) 编辑
摘要: path 考虑直接在 DFS 整棵树的过程中构造哈密尔顿回路。 先考虑如果是一条链怎么构造,我们可以隔一个跳一下,就像这样: 那么这样构造我们只需要用到距离不超过 2 的边,所以直接拓展到树上即可:如果当前节点深度是奇数,那么我们在 DFS 前输出这个点,否则在 DFS 完所有孩子之后再输出这个点。 阅读全文
posted @ 2019-10-21 15:22 AuroraPolaris 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 查看原题请戳这里 首先,这道题让求最大值最小,于是我们就很自然得想到了去二分这个最小值。 那么,怎么check呢? 我们发现,如果直接暴力去check,即二分区间长度+暴力枚举字符串+暴力枚举区间左端点+暴力对比,那么时间复杂度是O(n2m2log⁡2n)O(n^2m^2\log_2n)O(n2m2 阅读全文
posted @ 2019-10-17 20:12 AuroraPolaris 阅读(202) 评论(1) 推荐(0) 编辑