平面分割

Posted Zhoier

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平面分割相关的知识,希望对你有一定的参考价值。

题目:有n条直线互相相交,其中共有p(p>=2)个交点,求能分割出的平面的个数。

一看这题,是怎样推出是一个递推式的呢?

首先考虑每一条直线,他们相交共有两种情况:一种是全都相交于一点,另一种是不相交于一点。

那好,先来分析相交于一点的情况:

一条直线把平面分割成两个。

两条直线把平面分割成四个。

三条直线把平面分成六个;

四条直线把平面分成八个

……

n条直线把平面分成2*n个。

这样若干条直线相交于一点的情况就能推出来一个式子了。

接着再来考虑另一种情况,就是他们不是相交于一点的:

我们不妨也来以每一条直线为基本单位来推,假设p=3,那么从第四条直线开始思考:

第四条直线在原来的六个平面上又加了四个平面,2*3+4=10

再假设p=4,从第五条直线开始思考:

第五条在原来的八个平面上加了五个平面 2*4+5=13

所以能找出规律:p+1条直线添加了p+1个平面,要考虑一般情况,还得再考虑p+2,p+3……p+n这些直线。

还是上面的p=4的图,当添加第六条直线时:

平面的个数又加了六个,则可以推出第七条加了七个,第n条加了n个。

所以综合以上几种情况,可以得出递推式为2*p+(n+p+1)*(n-p)/2,这一个式子就可以把所有式子全部包含了,代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,p;
int main()
{
  scanf("%d%d",&n,&p);
  printf("%d",2*p+(n+p+1)*(n-p)/2);
  return 0;
}

这是一道运用分类讨论思想的递推题,只要把每种情况的式子列好,那么整合两种情况就可以解决。

以上是关于平面分割的主要内容,如果未能解决你的问题,请参考以下文章

直线,椭圆,三角形,折线分割平面问题

HDU - 2050 - 折线分割平面(数学 + dp)

平面分割

平面分割

四叉树平面分割算法--快速图元搜索

折线分割平面