其他分享
首页 > 其他分享> > 折线分割平面

折线分割平面

作者:互联网

折线分割平面

Time Limit: 1000MS Memory limit: 32768K

题目描述

我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,

Input 
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0< n<=10000),表示折线的数量。 
Output 
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。 
Sample Input 



Sample Output 

7

分析

直线分割平面

已有(n-1)条直线,再添加一条直线,最多有n-1个交点,增加了n个平面。

两条平行线分割平面

已有(n-1)组两条平行线,再添加一组平行线,平行线的其中一条和其他的2*(n-1)条直线,有2*(n-1)个交点,增加了2*(n-1)+1个平面,所以添加一组平行线,增加2*(2*(n-1)+1)个平面,整理下就是4*n-2个平面

折线分割平面

将平行线的两端连起来,形成折线,会发现本来被为3个平面的,会合成2个平面,所以添加一条折线增加 
2*(2*(n-1)+1)-1个平面,整理下就是4*n-3个平面。所以f(n) = f(n-1) + 4*n-3。

#include<iostream>
using namespace std;
int main()
{
	int t,n,i;
	long long s[10001];
	s[0]=1;
	s[1]=2;
	s[2]=7; 
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(i=3;i<=n;i++)
		{
			s[i]=s[i-1]+4*i-3;
		}
		cout<<s[n]<<endl;
	}
	return 0;
 } 

 

他喵的等等我 发布了40 篇原创文章 · 获赞 0 · 访问量 618 私信 关注

标签:直线,分割,平行线,添加,折线,平面
来源: https://blog.csdn.net/nlrkbqndrhh/article/details/104122262