题目描述:
给一个椭圆,上面有n个点,两两连接这n个点,得到的线段能把椭圆分为几个区域?
思路:
首先想想,n个点在椭圆边缘,每两个点两两连接有(C^2_n)条线段,这些线段交于很多点,求这些线段最多把椭圆分成几个部分。
考虑到欧拉公式:在平面图中(V-E+F=2),(V)为顶点数,(E)是边数,(F)是面数。我们要求的是(F),只要求(E)与(V)就行了。那么怎么求(V)呢?
考虑每一个顶点,以这个顶点为基础,不断向其他点发出对角线,在对角线左边的点是(i),右边的便是(n-2-i)个点,将左边的点与右边的点相互连接,便会与这条对角线相交,交点有(i(n-2-i))个,但是由于对每个点都枚举,这样会重复计算。重复计算了几次呢?我们知道,要产生一个交点需要两条线段,也就需要四个顶点,也就是说,遍历所有顶点后,对这一个交点事实上我们重复了四次,因为有四个顶点贡献了它。同理,边重复计算了两次。因此:(V=n+frac{n}{4}sum_{i=0}^{n-2}i(n-2-i)),(E=n+frac{n}{2}sum_{i=0}^{n-2}(i(n-2-i)+1))。
所以椭圆内的面有$F=E-V+2-1=frac{n}{4}sum_{i=0}^{n-2}i(n-2-i)+frac{n(n-1)}{2}+1=frac{n(n-3)(n-2)(n-1)}{24}+frac{n(n-1)}{2}+1 $。
由于(sum_{i=1}^n i(n+1-i)=frac{n(n+1)(n+2)}{6})
证明:
(n=1)时公式成立,假设n=k时也成立
(a_k=1*k+2*(k-1)+...+k*1)
(n=k+1)时,
(a_{k+1}=1*(k+1)+2*k+...+(k+1)*1)
(a_{k+1}-a{k}=1+2+...+k+1=frac{(k+2)(k+1)}{2}),(a_{k+1}=a_k+frac{(k+2)(k+1)}{2}=frac{n(n+1)(n+2)}{6}+frac{(k+2)(k+1)}{2}=frac{(k+1)(k+2)(k+3)}{6}).
证毕
注意如果找规律,1,2,4,8,16当n等于6时为31就不对了。
顺便说一下:
n个顶点形成的图要边数最大,就要形成完全图,完全图的边数为(frac{n(n-1)}{2})
参考文章:
weijifen000,UVa10213 多少块土地,https://blog.csdn.net/weijifen000/article/details/82709741