数学:平面分割直线

我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
折线分割平面" alt="杭电acm2050 折线分割平面" src="http://static.oschina.net/uploads/img/201509/07110015_GMTF.jpg">

Input

输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。

Output

对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。

Sample Input

2
1
2

Sample Output

2
7

分析:

先看N条相交的直线最多能把平面分割成多少块

折线分割平面" src="http://static.oschina.net/uploads/img/201509/07110015_usJm.jpg">

当添加第N条只显示,为了使平面最多, 则第N条直线要与前面的N-1条直线都相交,且没有任何三条直线教育一个点。

则第N条直线有N-1个交点。由于每增加N个交点,就增加N+1个平面,所以用N条直线来分隔平面,最多的数是1+1+2+3+…+n=1+n*(n+1)/2;

再看每次增加两条相互平行的直线

折线分割平面" src="http://static.oschina.net/uploads/img/201509/07110015_gFTS.jpg">

当第N次添加时,前面已经有2N-2条直线了,所以第N次添加时,第2N-1条直线和第2N条直线都各能增加2*(n-1)+1 个平面。

所以第N次添加增加的面数是2[2(n-1) + 1] = 4n - 2 个。因此,总面数应该是

1 + 4n(n+1)/2 - 2n = 2n2 + 1

如果把每次加进来的平行边让它们一头相交

折线分割平面" src="http://static.oschina.net/uploads/img/201509/07110015_0YKY.jpg">

则平面1、3已经合为一个面,因此,每一组平行线相交后,就会较少一个面,

所以所求就是平行线分割平面数减去N,为2n2 -n + 1

利用上述总结公式f(n)=2n2 -n + 1

#include<stdio.h>

int main()

{

int T,n;

scanf("%d",&T);

while(T--&&scanf("%d",&n)!=EOF)

printf("%d\n",2*n*n-n+1);

return 0;

}

或者利用公式f(n)=f(n-1)+4*(n-1)+1

#include<stdio.h>

int main()

{

__int64 s[10001];

int i,T,n;

scanf("%d",&T);

while(T--)

{

s[0]=1;

scanf("%d",&n);

for(i=1;i<=n;i++)

s[i]=s[i-1]+4*(i-1)+1;

prin

时间: 2024-11-05 06:31:35

数学:平面分割直线的相关文章

递推算法之平面分割问题总结

这是一类问题,首先由直线划分区域到折线划分区域,再延伸到封闭图形划分区域,最后在推广为平面划分空间的问题. 一.n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域. 析:可能你以前就见过这题目,这充其量是一道初中的思考题.当有n-1条直线时,平面最多被分成了f(n-1)个区域.则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点. 这样就会得到n-1个交点.这些交点将第n条直线分为2条射线和n-2条线断.而每条射线和线断将以有的区域一分为二.这样就多出了

平面分割问题

(1) n条直线最多分平面问题 题目:n条直线,最多可以把平面分为多少个区域. 解析:       当有n-1条直线时,平面最多被分成了f(n-1)个区域.      则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点.      这样就会得到n-1个交点.这些交点将第n条直线分为2条射线和n-2条线断.      而每条射线和线断将以有的区域一分为二.这样就多出了2+(n-2)个区域. 故:f(n)=f(n-1)+n f(n-1)=f(n-2)+n-1 --        

BZOJ 1091([SCOI2003]分割多边形-分割直线)

1091: [SCOI2003]分割多边形 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 223  Solved: 82 [Submit][Status] Description 有一个凸p边形(p<=8).我们希望通过分割得到它.一開始的时候,你有一个n*m的矩形,即它的四角的坐标分别为(0,0), (0,m), (n,0), (n,m).每次你能够选择一条直线把当前图形分割成两部分,保留当中一个部分(还有一部分扔掉)分割线的长度为此直线在多边

平面分割

当有n-1条直线时,平面最多被分成了f(n-1)个区域.则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点.这样就会得到n-1个交点.这些交点将第n条直线分为2条射线和n-2条线断.而每条射线和线断将以有的区域一分为二.这样就多出了2+(n-2)个区域. 点分线     f(x)=x+1; 线分面     g(x)=g(x-1)|+f(x-1)=n(n+1)/2+1: 面分线    k(x)=k(x-1)+g(x-1)=(n^3+5n)/6+1: 是不是很漂亮的公式:

空间平面,空间直线及它们的方程

先看几道题! 第一题根据方程画平面: 1. x=0 2. 3y-1=0 3. 2x-3y-6=0 4. x-(√3)y=0 5. y+z=1 6. x-2z=0 7 6x+5y-z=0 我决定用python 的工具包matplotlib去画! 所以先不去看这些题. 第二题求过点m1(3,-2,1) 和 点m2(-1,0,2)的直线方程. 第三题求过点(0,2,4)和两平面x+2z=1 和 y-3z=2 平行的直线方程.

八、平面分割和敷铜

1.画分割带Add-Line 2.平面层分隔 3.铜皮赋予网络 原文地址:https://www.cnblogs.com/ydvely521/p/11628969.html

折线分割平面(杭电2050)(递归的几种类型,数学推导)

折线分割平面 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17706    Accepted Submission(s): 12192 Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平

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

题意: 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分 思路: 记住结论... 平面分割 n(n+1)/2+1 折现分割2n^2-n+1 封闭曲线分平面问题n^2-n+2 平面分割空间问题(n^3+5n)/6+1 dalao的推到过程:https://www.jianshu.com/p/18ed6a125e82 代码: #include<iostream> using n

洛谷P1257 平面上的最接近点对 数学 分治 排序

来自洛谷上的题解 方法一: 先求第1个点与其余n-1个点的距离: 再求第2个点与其余n-2个点的距离: 再求第3个点与其余n-3个点的距离: ---------------- 再求第n-1个点与其余1个点的距离: 然后找出最小值. 如此的算法复杂度为O(n^2),显然不能满足本题的需要.但--貌似洛谷神机可以--过-- 欢迎朴素的同学挑战数据加强版新 方法二: 考虑以下分治算法: 设平面上的点都在点集S中,为了将S线性分割为大小大致相等的2个子集S1和S2,我们选取一垂直线l(方程:x=m)来作