Loading docs/geometry/convex-hull.md +8 −8 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ stk[++tp] = 1; //栈内添加第一个元素,且不更新 used,使得 1 在最后封闭凸包时也对单调栈更新 for (int i = 2; i <= n; ++i) { while (tp >= 2 // 下一行*被重载为叉积 while (tp >= 2 // 下一行 * 操作符被重载为叉积 && (p[stk[tp]] - p[stk[tp - 1]]) * (p[i] - p[stk[tp]]) <= 0) used[stk[tp--]] = 0; used[i] = 1; // used 表示在凸壳上 Loading @@ -61,10 +61,10 @@ int ans = tp - 1; ``` 根据上面的代码,最后凸包上有 $ans$ 个元素(额外存储了 $1$ 号点,因此 $h$ 数组中有 $ans+1$ 个元素),并且按逆时针方向排序。周长就是 根据上面的代码,最后凸包上有 $\textit{ans}$ 个元素(额外存储了 $1$ 号点,因此 $h$ 数组中有 $\textit{ans}+1$ 个元素),并且按逆时针方向排序。周长就是 $$ \sum_{i=1}^{ans}\left|\overrightarrow{h_ih_{i+1}}\right| \sum_{i=1}^{\textit{ans}}\left|\overrightarrow{h_ih_{i+1}}\right| $$ ### 例题 Loading Loading
docs/geometry/convex-hull.md +8 −8 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ stk[++tp] = 1; //栈内添加第一个元素,且不更新 used,使得 1 在最后封闭凸包时也对单调栈更新 for (int i = 2; i <= n; ++i) { while (tp >= 2 // 下一行*被重载为叉积 while (tp >= 2 // 下一行 * 操作符被重载为叉积 && (p[stk[tp]] - p[stk[tp - 1]]) * (p[i] - p[stk[tp]]) <= 0) used[stk[tp--]] = 0; used[i] = 1; // used 表示在凸壳上 Loading @@ -61,10 +61,10 @@ int ans = tp - 1; ``` 根据上面的代码,最后凸包上有 $ans$ 个元素(额外存储了 $1$ 号点,因此 $h$ 数组中有 $ans+1$ 个元素),并且按逆时针方向排序。周长就是 根据上面的代码,最后凸包上有 $\textit{ans}$ 个元素(额外存储了 $1$ 号点,因此 $h$ 数组中有 $\textit{ans}+1$ 个元素),并且按逆时针方向排序。周长就是 $$ \sum_{i=1}^{ans}\left|\overrightarrow{h_ih_{i+1}}\right| \sum_{i=1}^{\textit{ans}}\left|\overrightarrow{h_ih_{i+1}}\right| $$ ### 例题 Loading