[解題報告]hdoj1249(平面分割)
阿新 • • 發佈:2019-01-05
大概題意:若干case,每個給定數字n,表示平面上有n個三角形,輸出這n個三角形最多能把平面分割成多少平面。
例,1=>2 2=>8
這個用了數學推理,類似的推理還有,n條直線最多能把一個平面分割成多少個平面,n個折線,n個橢圓……
貼上兩個推理的帖子地址
順便記一下幾個公式:
直線:f(n)=f(n-1)+n=1+n(n-1)/2;
折線:f(n)=f(n-1)+(4n-3)=2*n*n-n+1;
三角形:f(n)=f(n-1)+6(n-1)=2+3*n*(n-1);
橢圓:f(n)=f(n-1)+2(n-1)=2+n(n-1);
對於這道三角形的,可以發現,每新增一個三角形時,新三角形的每一條邊,最多可與之前的(n-1)個三角形的兩條邊相交,於是新三角形的每一條邊可以割到2*(n-1)-1個新平面(減去最大的那個平面)
所以新三角形的3條邊可以割到6*(n-1)-3個新平面
再加上新三角形的三個角,即6*(n-1)個
所以s(n)=s(n-1)+6*n*(n-1)
#include<stdio.h>
using namespace std;
int main()
{
int kase;
scanf("%d",&kase);
int n;
while(kase--)
{
scanf("%d",&n);
printf("%d\n",2+3*n*(n-1));
}
return 0;
}