分割问题

1.直线平分面

n条直线,最多可以把平面分为多少个区域?
从一条直线开始想,第一条直线可以把一个平面分成两个平面。
第二条直线为了分出最多的区域,就需要与第一条直线相交。
第三条直线为了分出最多的区域,就需要与第一条,第二条直线都相交。
第 n 条直线为了分出最多的区域,就需要和前面的 n-1 条直线相交。
先理解这里,然后我们继续
一条直线与一条直线相交,会产生一个交点。
一条直线与两条直线相交,会产生两个交点。
一条直线与 n 条直线相交,会产生 n 个交点。
这里理解后,我们继续
一条直线被另一条直线分成 n 段后,产生的 n 个结点会把该直线分成 n + 1 部分
这 n + 1 部分包含了 2 条射线(直线的两端) 和 n - 1 条线段。
这些射线和线段会把这个位置上原来的平面分成两部分。
也就是说,新产生了 n + 1 个面
对于第 n 条线来说,它与n - 1条直线相交,产生了 n - 1 个交点,新产生了 n 个面。
我们可以列出公式:
f(n) = f(n - 1) + (n )
f(n) = f(n - 2) + (n - 1) + (n)

f(n) = f(1) + 2 + 3 + … + n
= 2 + 2 + 3 + … + n
=1 + (1 + 2 + … + n)
= n*(n+1)/2+1

分割问题,就是要找出关系
线与线相交会产生点,点会把先分割开,被分割开的线又会分割平面

理解完这个,我们继续推广

2.每次使用两条直线分割平面

思路和 1 的思路一样,每次使用两条直线,我们可以把每一次的行动拆开来看
第 n 次使用直线分割平面时,我们手上拿着两根直线。
先拿出第一根,此时该平面被 2 *(n - 1)条直线分割了,那么手上拿着的 第 2n - 1 条直线继续分割,带入 1 中公式即可。
再拿出第二根,此时该平面被 2 * (n - 1) + 1 条直线分割了,你手上拿着第 2n 条直线继续分割,带入公式即可。

我们也可以这样理解,每次使用两条直线进行分割,就是每次进行两次 用直线分割平面的操作,也就是说,直接将 1 中公式中的 n 换成 2n就可以了。

f(n)= f(n - 1) + 2 * n - 1 + 2 * n = f(n - 1) + 4 * n - 1

f(n)= 1 + 2 * n * n + n

3.使用折线分割平面

题详见 hdu 2050 hdu 2050 折线分割平面
用折线分割平面我们可以这样考虑,下图是两条直线分割平面的情况

在这里插入图片描述
我们可以看到,两条直线把平面分成了四个面。
现在我们进行下一部操作,把交点开始的两条边划掉,让这两条直线变成一条折现
在这里插入图片描述
我们可以看到,两条直线中间夹着的面 1 消失了,线两旁的面 2 ,4合成了一个面
总的来讲,就是有 2 个面消失了。

也就是说,我们每次使用两条直线进行平面分割,再把两条直线变成折现,每次进行都会有 2 个面消失
我们把 2 的公式拿过来
f(n)= 1 + 2 * n * n + n
我们每次都会损失两个面,第 n 次分割会损失 2n个面,我们减去这些损失的面,就可以得到结果
f(n) = 1 + 2 * n * n - n

4.封闭曲线分平面

设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数
虽然是封闭曲面,但仍然是线
两个曲线相交会产生两个交点,点会把线分割开,得到的射线和线段会分割平面。换汤不换药。
详解可以按照 1 中的步骤进行推演
结果如下
f(n) = f(n - 1) + 2 * ( n - 1)
= f(1) + 2 + 4 + … + 2 * ( n - 1)
= n ^ 2 - n + 2

5.平面分割空间的问题

由二维的分割问题可知,平面分割与线之间的交点有关,即交点决定射线和线段的条数,从而决定新增的区域数。试想在三维中则是否与平面的交线有关呢
这道题的思路其实就是举一反三的过程,一个从线推广到面的过程。

线与线 -> 点 -> 线 -> 线段 -> 面
面与面 -> 线 -> 面 -> 区域 -> 空间

在线与线相交分割平面的时候,线与线会产生点,点会把线分割成段,而后每个线段会平分面产生新的面。
面与面相交分割空间的时候,面与面会产生交线,线会分割面(本文开始 1.直线平分面),而后每一块面又会分割空间。
两个面相交会产生 1 条交线 , 第 n 个面与剩下 n - 1个面相交会产生 n - 1条交线,这个面又会被分割成许多个区域,每个面会把原来的空间分成两部分。我们拿出 1 中的公式,就可以得到本题的结果。

我们设g(n)为n条直线分割平面最多产生的区域数(即 1 中的解)g(n)=n(n+1)/2+1
f = f(n - 1) + g(n - 1)
=f(n - 2) + g(n - 2) + g(n - 1)

=f(1) + g(1) + g(2) + …+g(n-1)
=2 + (1 * 2 + 2 * 3 + 3 * 4 + … + (n - 1) * n ) / 2 +(n - 1)
=(1+2^2 + 3^2 + 4^2 +…… + n^2 - 1 - 2 - 3 - … - n ) / 2 + n + 1
=(n ^ 3 + 5*n ) / 6 + 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值