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 docs/geometry/pick.md +5 −6 Original line number Diff line number Diff line ## Pick 定理 Pick 定理:给定顶点坐标均是整点(或正方形格子点)的简单多边形,皮克定理说明了其面积 ${\displaystyle A}$ 和内部格点数目 ${\displaystyle i}$ 、边上格点数目 ${\displaystyle b}$ 的关系: ${\displaystyle A=i+{\frac {b}{2}}-1}$ 。 Pick 定理:给定顶点均为整点的简单多边形,皮克定理说明了其面积 ${\displaystyle A}$ 和内部格点数目 ${\displaystyle i}$ 、边上格点数目 ${\displaystyle b}$ 的关系: ${\displaystyle A=i+{\frac {b}{2}}-1}$ 。 具体证明: [Pick's theorem](https://en.wikipedia.org/wiki/Pick%27s_theorem) Loading @@ -17,14 +17,13 @@ Pick 定理:给定顶点坐标均是整点(或正方形格子点)的简单 给一个平面上的简单多边形,求边上的点,多边形内的点,多边形面积。 ### Solution ### 题解 这道题目其实用了以下三个知识: - 以格子点为顶点的线段,覆盖的点的个数为 $\gcd(dx,dy)$ ,其中, $dx,dy$ 分别为线段横向占的点数和纵向占的点数。如果 $dx$ 或 $dy$ 为 $0$ ,则覆盖的点数为 $dy$ **或** $dx$ 。 - Pick 定理:平面上以格子点为顶点的简单多边形的面积 = 边上的点数/2 + 内部的点数 + 1。 - 以整点为顶点的线段,覆盖的点的个数为 $\gcd(\textit{dx},\textit{dy})$ ,其中, $\textit{dx},\textit{dy}$ 分别为线段横向占的点数和纵向占的点数。如果 $\textit{dx}$ 或 $\textit{dy}$ 为 $0$ ,则覆盖的点数为 $\textit{dy}$ **或** $\textit{dx}$ 。 - Pick 定理:平面上以整点为顶点的简单多边形的面积 = 边上的点数/2 + 内部的点数 + 1。 - 任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和(这个也可以通过顺时针定积分求得)。 于是这题就愉快地做完了 ```cpp #include <cmath> 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
docs/geometry/pick.md +5 −6 Original line number Diff line number Diff line ## Pick 定理 Pick 定理:给定顶点坐标均是整点(或正方形格子点)的简单多边形,皮克定理说明了其面积 ${\displaystyle A}$ 和内部格点数目 ${\displaystyle i}$ 、边上格点数目 ${\displaystyle b}$ 的关系: ${\displaystyle A=i+{\frac {b}{2}}-1}$ 。 Pick 定理:给定顶点均为整点的简单多边形,皮克定理说明了其面积 ${\displaystyle A}$ 和内部格点数目 ${\displaystyle i}$ 、边上格点数目 ${\displaystyle b}$ 的关系: ${\displaystyle A=i+{\frac {b}{2}}-1}$ 。 具体证明: [Pick's theorem](https://en.wikipedia.org/wiki/Pick%27s_theorem) Loading @@ -17,14 +17,13 @@ Pick 定理:给定顶点坐标均是整点(或正方形格子点)的简单 给一个平面上的简单多边形,求边上的点,多边形内的点,多边形面积。 ### Solution ### 题解 这道题目其实用了以下三个知识: - 以格子点为顶点的线段,覆盖的点的个数为 $\gcd(dx,dy)$ ,其中, $dx,dy$ 分别为线段横向占的点数和纵向占的点数。如果 $dx$ 或 $dy$ 为 $0$ ,则覆盖的点数为 $dy$ **或** $dx$ 。 - Pick 定理:平面上以格子点为顶点的简单多边形的面积 = 边上的点数/2 + 内部的点数 + 1。 - 以整点为顶点的线段,覆盖的点的个数为 $\gcd(\textit{dx},\textit{dy})$ ,其中, $\textit{dx},\textit{dy}$ 分别为线段横向占的点数和纵向占的点数。如果 $\textit{dx}$ 或 $\textit{dy}$ 为 $0$ ,则覆盖的点数为 $\textit{dy}$ **或** $\textit{dx}$ 。 - Pick 定理:平面上以整点为顶点的简单多边形的面积 = 边上的点数/2 + 内部的点数 + 1。 - 任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和(这个也可以通过顺时针定积分求得)。 于是这题就愉快地做完了 ```cpp #include <cmath> Loading