平面分割
阿新 • • 發佈:2018-07-26
image 需求 似的 一行 n+1 平面最多 .com img 測試
描述
說起佐羅,大家首先想到的除了他臉上的面具,恐怕還有他每次刻下的“Z”字。我們知道,一個“Z”可以把平面分為2部分,兩個“Z”可以把平面分為12部分,那麽,現在的問題是:如果平面上有n個“Z”,平面最多可以分割為幾部分呢?
說明1:“Z”的兩端應看成射線;
說明2:“Z”的兩條射線規定為平行的。
輸入
輸入數據的第一行是一個整數C,表示測試實例的個數,然後是C 行數據,每行包含一個整數n(0<n<=10000),表示“Z”字的數量。
輸出
對於每個測試實例,請輸出平面的最大分割數,每個實例的輸出占一行。
樣例輸入
2
1
2
樣例輸出
2
12
此類題有一固定做法——【解方程】
對於二維空間來說:f(x)=ax^2+bx+c;
對於三維空間:f(x)=ax^3+bx^2+cx+d;
此題中,顯然是二維的,只需求n=3時的情況,然後帶入可得;
n=3時,要求最多的,先看一條線段,當其中一條線與最多線相交時,即與六條線相交時;為31種。
然後解方程組即可得到a,b,c的值;方程可得,程序自然就出來了。
——【遞推】
每一組平行線相交後,就會較少一個面,
首先考慮一個類似的問題:
有N組直線,每組都由3條平行的直線構成,3條直線的間距可以調整。
那麽N組直線最多劃分出多少個區域?
這個問題就很容易求出來,3n(3n-1)/2+1
本題的答案,就是把每組3條平行直線變成Z,也就是在3n(3n-1)/2+1的基礎上再減2n即可
典型的遞推題 設f(n)表示n個z字型折線至多平面劃分數。 現在增加一條邊a,和3n條線都相交,增加3n+1個區域。 再增加一條邊b,與a平行,同樣增加3n+1個區域。 最後增加一條邊c,與已有的邊都相交,增加3n+3個區域。又因為要與a,b形成鋸齒形,所以又減去2*2個區域 所以得出遞推式 f(n)=f(n-1)+9*(n-1)+1 ---------------------------------------------------------------------- 自己的思路 第條線都要與之前所有的線相交 所以之前有3(n-1)條線 因此會出現3*3(n-1)個線段 每個線段都會有一個新平面 又增加兩條射線 所以為9(n-1)+2 但是折線相鄰的線段只 能增加一個面 9(n-1)+2-1
平面分割