ACM - 算法
R-bin
Technology changes the world
展开
-
ACM - 算法 | ST算法处理RMQ问题
RMQRMQ (Range Minimum/MaximumQuery)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。构建笛卡尔树可以解决RMQ问题,同时利用ST(倍增)算法构造dp二维数组,也可以完成RMQ问题的查询。代码思路定义: dp[i][j]表示数组ar...原创 2019-07-20 00:48:26 · 196 阅读 · 0 评论 -
ACM - 算法 | 快速幂
快速幂顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。快速幂的思想假设一个情况,我们要求 511 的具体值。利用常规思路,即为5∗5∗5∗5∗5∗5∗5∗5∗5∗5∗5=488281255*5*5*5*5*5*5*5*5*5*5=48 828 1255∗5∗5∗5∗5∗5∗5∗5∗5∗5∗5=48828125这样的操作...原创 2019-07-25 11:12:29 · 304 阅读 · 0 评论 -
ACM -算法 | 堆优化Dijkstra算法
Dijkstra算法对于一个边权为正的图,我们可以利用Dijkstra算法求出单源最短路径(SSSP),对于常规的Dijkstra算法,其复杂度为 O(n2)O(n^2)O(n2) ,显然在 nnn 较大的时候,可能导致耗时过长,通过优化我们可以获得一种更加快速的Dijkstra算法,时间复杂度为 O(mlogn)O(mlogn)O(mlogn) 。本篇博客的代码源于**《算法竞赛入门经典(第2...原创 2019-07-30 21:18:35 · 377 阅读 · 1 评论