SkyWT / 博客 / 第 14 页

以 O(N) 线性时间复杂度递推逆元的方法

在之前我们已经知道乘法逆元的三种求法,对于一般的题目让你把答案模一个质数,如果要求逆元一般用费马小定理,可以在 $\Theta (Nlog_2(N))$ 时间内构造出 1 到 N 的逆元:$inv(x)=x^{mo-2} \bmod mo$。但是对于 $10^7$ 级别的 $N$,这样的求法就显得有点慢。能不能在 $\Theta (N)$ 时间内递推出 $inv(x)$ 呢?

阅读更多

利用容斥原理求解 [a,b] 区间中与 n 互质的数字个数

先看这道丧心病狂的题目:HDU 4135 Co-prime。题目大意就是,有 $T$ 组询问,每组询问给你三个数:$a, b, c$,问你闭区间 $[a,b]$ 中有多少个数字与 $n$ 互质。数据范围是:$1 \leqslant A \leqslant B \leqslant 10^{15}$,$1 \leqslant N \leqslant 10^5$。

乍一看毫无头绪,仿佛怎么做都会超时……其实用容斥的想法就很容易了~

阅读更多



差分约束系统的应用

如果告诉你在一个三角形中,$B-A \leqslant c, C-B \leqslant a, C-A \leqslant b$,怎么求 $C-A$ 的最大值呢?通过yy观察可以发现,$C-A$ 的最大值是 $min(a+c,b)$。这个答案如何得出?将这个三角形内的约束条件推广到更多约束条件呢?

阅读更多

Tarjan 算法求解无向图的割点与割边

在一幅无向图中,如果删除了一个点,导致图分成了两个或多个联通块(强连通分量),那么这个点就是割点。怎么求这样的点呢?最原始暴力的方法就是每次枚举一个点,删除,跑一遍最短路。今天我们可以用更高级的 Tarjan 算法 $ \displaystyle \Theta (N)$ 求解。

阅读更多