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

2 1 2
2
这道题一开始没有思路,看了其他的博客,用贪心策略
今天这道贪心题分为以下几个步骤,
1.首先我们想一下直线的情况,
按贪心策略,要想得到最多的平面,则新加入的一条边N,要与之前的N-1条边都相交产生两两相交的交点(没有任意三条相交于一点)。
则第N条直线最多就有N-1个交点,然后由于每增加N个点,增加N+1个平面
则n条直线最多将平面分割成1+1+2+...+n=1+n*(n+1)/2 部分
2.然后我们看每增加两条相互平行的直线。
当第N次添加时,前面已经有2N-2条直线了,所以第N次添加时,第2N-1条直线和第2N条直线都各能增加2*N-1平面,所以一共增加了4N-2个平面。
然后计算一下
sum=1-2*n+4(1+2+...+n)=2*n*(n+1)-2n+1=2*n*n+1;
3.最后我们看每次让新增加的变为折线
变为折线后,每次增加,都少产生一个平面,
然后就是总共少产生了N个平面。
故结果变为2*n*n-n+1
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n;
long long a;
cin>>n;
while(n--)
{
cin>>a;
printf("%lld\n",2*a*a-a+1);
}
}