Loading docs/math/lagrange-poly.md +5 −5 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ ### 题目大意 给出 $n$ 个点 $P_i(x_i,y_i)$ ,将过这 $n$ 个点的最多 $n-1$ 次的多项式记为 $f(x)$ ,求 $f(k)$ 的值。 给出 $n$ 个点 $P_i(x_i,\,y_i)$ ,将过这 $n$ 个点的最多 $n-1$ 次的多项式记为 $f(x)$ ,求 $f(k)$ 的值。 ### 方法 1:差分法 Loading @@ -27,13 +27,13 @@ ### 方法 3:拉格朗日差值法 考虑将每个点做一个对于 $x$ 轴的垂线,设垂足为 $H_i(x_i,0)$ 。 考虑将每个点做一个对于 $x$ 轴的垂线,设垂足为 $H_i(x_i,\,0)$ 。  如上图所示,黑线等于蓝线加绿线加红线。每次我们选择 $1$ 个 $P_i$ ,并选择其他的 $H_j[j\neq i]$ ,做一条过这些点的一条至多 $n-1$ 次的线。由于有 $n-2$ 个点都在 $x$ 轴上,我们知道这条线的解析式一定是形如 $g_i(x)=y_i\times (\prod_{i=1}^{n} (x-x_i)[i\neq x])$ 的形式。 最后将所有的 $g(x)$ 相加,即 $f(x)=sum_{i=1}^{n}g_i(x)$ 。因为对于每个点 $P_i$ ,都只有一条函数经过 $P_i$ ,其余都经过 $H_i$ ,这一项的系数是 $0$ ,所以最后的和函数总是过所有 $n$ 个点的。 最后将所有的 $g(x)$ 相加,即 $f(x)=\sum_{i=1}^{n}g_i(x)$ 。因为对于每个点 $P_i$ ,都只有一条函数经过 $P_i$ ,其余都经过 $H_i$ ,这一项的系数是 $0$ ,所以最后的和函数总是过所有 $n$ 个点的。 公式整理得: Loading @@ -41,9 +41,9 @@ 如果要将每一项都算出来,时间复杂度仍是 $O(n^2)$ 的,但是本题中只用求出 $f(k)$ 的值,所以只需将 $k$ 代入进式子里得: $Ans=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{k-x_j}{x_i-x_j})$ $\mathrm{answer}=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{k-x_j}{x_i-x_j})$ 本题中,还需要求解逆元。如果先分别计算出分子和分母,在计算分母的逆元,乘上分子,累加进最后的答案,时间复杂度的瓶颈就不会在求逆元上,时间复杂度为 $O(n^2)$ 。 本题中,还需要求解逆元。如果先分别计算出分子和分母,再将分子乘进分母的逆元,累加进最后的答案,时间复杂度的瓶颈就不会在求逆元上,时间复杂度为 $O(n^2)$ 。 ### 代码实现 Loading Loading
docs/math/lagrange-poly.md +5 −5 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ ### 题目大意 给出 $n$ 个点 $P_i(x_i,y_i)$ ,将过这 $n$ 个点的最多 $n-1$ 次的多项式记为 $f(x)$ ,求 $f(k)$ 的值。 给出 $n$ 个点 $P_i(x_i,\,y_i)$ ,将过这 $n$ 个点的最多 $n-1$ 次的多项式记为 $f(x)$ ,求 $f(k)$ 的值。 ### 方法 1:差分法 Loading @@ -27,13 +27,13 @@ ### 方法 3:拉格朗日差值法 考虑将每个点做一个对于 $x$ 轴的垂线,设垂足为 $H_i(x_i,0)$ 。 考虑将每个点做一个对于 $x$ 轴的垂线,设垂足为 $H_i(x_i,\,0)$ 。  如上图所示,黑线等于蓝线加绿线加红线。每次我们选择 $1$ 个 $P_i$ ,并选择其他的 $H_j[j\neq i]$ ,做一条过这些点的一条至多 $n-1$ 次的线。由于有 $n-2$ 个点都在 $x$ 轴上,我们知道这条线的解析式一定是形如 $g_i(x)=y_i\times (\prod_{i=1}^{n} (x-x_i)[i\neq x])$ 的形式。 最后将所有的 $g(x)$ 相加,即 $f(x)=sum_{i=1}^{n}g_i(x)$ 。因为对于每个点 $P_i$ ,都只有一条函数经过 $P_i$ ,其余都经过 $H_i$ ,这一项的系数是 $0$ ,所以最后的和函数总是过所有 $n$ 个点的。 最后将所有的 $g(x)$ 相加,即 $f(x)=\sum_{i=1}^{n}g_i(x)$ 。因为对于每个点 $P_i$ ,都只有一条函数经过 $P_i$ ,其余都经过 $H_i$ ,这一项的系数是 $0$ ,所以最后的和函数总是过所有 $n$ 个点的。 公式整理得: Loading @@ -41,9 +41,9 @@ 如果要将每一项都算出来,时间复杂度仍是 $O(n^2)$ 的,但是本题中只用求出 $f(k)$ 的值,所以只需将 $k$ 代入进式子里得: $Ans=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{k-x_j}{x_i-x_j})$ $\mathrm{answer}=\sum_{i=1}^{n} y_i\times(\prod_{j\neq i }\frac{k-x_j}{x_i-x_j})$ 本题中,还需要求解逆元。如果先分别计算出分子和分母,在计算分母的逆元,乘上分子,累加进最后的答案,时间复杂度的瓶颈就不会在求逆元上,时间复杂度为 $O(n^2)$ 。 本题中,还需要求解逆元。如果先分别计算出分子和分母,再将分子乘进分母的逆元,累加进最后的答案,时间复杂度的瓶颈就不会在求逆元上,时间复杂度为 $O(n^2)$ 。 ### 代码实现 Loading