HDU2050 折線分割平面

2021-07-26 10:53:58 字數 2265 閱讀 6821

我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。

輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n(0

output

對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。

sample input

212

sample output

2

7

這種型別的題目,在acm程式設計中比較經典,這裡我們由淺入深來學習下:

(1)在乙個平面上有乙個圓和n條直線,這些直線中每一條在圓內同其他直線相交,假設沒有3條直線相

交於一點,試問這些直線將圓分成多少區域。

很容易看出遞推關係,每新增一條直線,都將原來所有的區域分成兩半,因此第n條直線會在原來的基礎

上再新增n個平面,函式遞推關係式如下:

遞推公式1:

f(0) = 1

f(1) = 2

f(2) = 4

...f(n) = f(n - 1) + n

通項公式推導1:

f(n)

= f(n - 1) + n

= f(n - 2) + n + (n - 1)

= ...

= f(0) + n + (n - 1) + ... + 1

= 1 + (1 + n) * n / 2

(2)若每次使用兩條直線分割,即此時的n相當於原來的2n,可得:

遞推公式2:

f(0) = 1

f(1) = 4

f(2) = 11

...f(n) = f(n - 1) + 2 * n - 1 + 2 * n = f(n - 1) + 4 * n - 1

通項公式推導2_1:

f(n)

= f(n - 1) + (4 * n - 1)

= f(n - 2) + 4 * (n - 1) - 1 + (4 * n - 1)

= ...

= f(0) + (4 * 1 - 1) + (4 * 2 - 1) + ... + (4 * n - 1)

= 1 + 4 * (1 + 2 + .. + n) - n

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

= 1 + 2 * n * n + n

上面的推導公式比較複雜,其實也可以直接將通項公式推導1中推導結果的n用2n替代,這樣就容易理解多

了:通項公式推導2_2:

f(n)

= 1 + (1 + (2 * n)) * (2 * n) / 2

= 1 + 2 * n * n + n

(3)若是普通直線,相交處所分割的平面為4份,而折線為兩份,即每次分割比上面所考慮的情況少2份

,那麼只要在上述情況的每次分割時減去2就能得到本題的結果了。

遞推公式3:

f(n)

= f(n - 1) + 4 * n - 1 - 2

= f(n - 1) + 4 * n - 3

通項公式:

f(n)

= 1 + 2 * n * n + n - 2 * n

= 1 + 2 * n * n - n

對於(3)這種型別,還有另外一種很好的解釋(分享下!!):

分割平面的個數=交點個數+頂點個數+1

令f(n-1)為前n-1條折線分割的平面數,當新增第n條折線時。

因為每一條邊與前n-1條折線的兩條邊都相交,故增加的交點數為2*2*(n-1),頂點增加1,故

f(n)=f(n-1)+4(n-1)+1

f(n-1)=f(n-2)+4(n-2)+1

....

f(2)=f(1)+4*1+1

f(1)=2

f(n)-2=4((n-1)+(n-2)+...+1)+(n-1)=4*((1+n-1)*(n-1)/2)+n-1=2(n*n-n)+n-1

f(n)=2n^2-n+1

可以得出公式f(n)=2n^2-n+1

總結:直線:

最多可分為(1/2)*n*(n+1)+1塊區域

折線:那就是可以分成(2×n^2-n+1)塊區域

ac**:

#include

int main()

return 0;

}

HDU2050 折線分割平面

題目描述 problem description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資...

hdu 2050 折線分割平面

歸納 1 n條直線最多分平面問題 題目大致如 n條直線,最多可以把平面分為多少個區域。析 可能你以前就見過這題目,這充其量是一道初中的思考題。但乙個型別的題目還是從簡單的入手,才容易發現規律。當有n 1條直線時,平面最多被分成了f n 1 個區域。則第n條直線要是切成的區域數最多,就必須與每條直線相...

hdu 2050 折線分割平面

problem description 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包...