平面分割问题。。

来源:互联网 发布:matlab数据转换 编辑:程序博客网 时间:2024/04/29 04:06

直线分割。。

n条直线相交,第n条必定与第n-1条相交。
为达到最大的切割平面数,必定不存在焦点重合,
则第n条直线被分成2条射线和n-2条线段。
每条射线和线段都会再多划分出一个平面。
即:
f(n) = f(n-1) + 2 + (n - 2)
= f(n-1) + n;
f(n-1) = f(n-2) + n - 1;
f(n-2) = f(n-3) + n - 2;

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

hdu 2050
新增线段数为4 * (n - 1), 新增射线为2,但要减去折线相邻的一个区域。。

#include <iostream>using namespace std;int main(){    int T;    scanf("%d", &T);    while (T--)    {        int n;        scanf("%d", &n);        printf("%d\n", 2 * n * n - n + 1);    }}

平面分割。。

第n个平面必定与前n-1个平面相交;
必定产生n - 1条交线;
n条直线划分出 n * (n +1)/2+1个平面;

F(n) = F(n-1) + f(n - 1)
= F(n-1) + (n - 1) * n / 2 + 1
= (n^3 + 5n) / 6 + 1;(错位相减)
hdu 1290

封闭曲线。。

任意两个封闭曲线相交于两点;
如,n个圆相交,第n个圆就必定与前n-1个圆相交;
则第n个圆被分为2(n-1)段线段;
即增加了2(n-1)个区域;
f(n) = f(n-1) + 2(n-1) = n^2 - n + 2;

0 0
原创粉丝点击