题解 LA4285
题目大意 多组数据,每组数据给定一个正整数 \(n(n\leq 50)\) 和平面内 \(n\) 个点,求出有多少个由这些点组成的简单,单调(monotone)多边形。一个单调多边形指的是构成这个多边形的所有边的斜率都在 \((-\frac{\pi}2,\frac{\pi}2)\) 中。数据保证没有两个点 \(x\) 轴坐标相同。 分析 不难想到将所有点按照 \(x\) 坐标排个序,然后按照上下两条折线考虑。我们令 \(f[i][j](i\neq j\ or\ i=j=1\ or\ i=j=n)\) 为上折线最右端为第 \(i\) 个点,下折线最右端为第 \(j\) 个点的所有方案数。不妨假定 \(i<j\) ,则 \(f[i][j]\) 只能向 \(f[i][j+1]\) 和 \(f[j+1][j]\) 转移。向 \(f[i][j+1]\) 的转移一定是可以的,我们来考虑向 \(f[j+1][j]\) 的转移。 用数学归纳法可以得到 \(f[i][j]\) 的所有方案数一定满足单调,那么就只用考虑简单了,也就是说边 \((i,j+1)\) 不能和边 \((k, k+1)|i<k<j\) 相交,也就是说点 \(k|i<k\leq j\) 全都在边 \((i,j+1)\) 的同一侧(下侧),更进一步,如果考虑点 \(j+1\) 的极角,有 \(ang_i<ang_k(i<k\leq