題解 hdu 折線分割平面 問題轉化

2021-10-01 11:26:34 字數 929 閱讀 9896

題目描述

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

輸入輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n(n>0 && n<=10000),表示折線的數量。

####輸出

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

####樣例輸入21

2樣例輸出

思路做這種型別的題無非就是找規律,折線切割平面的規律我們發現並不好找。但是我們已經知道直線切割平面的規律非常好找,如下圖:

從三條線的情況中可以看出,被直線切割的內部區域(綠色標記部分)有1個,外部區域(藍色標記部分)有 2 x 3=6個;

四條線的時候,內部區域有1+2=3個,外部區域有2x4=8個;

五條線的時候,內部區域有1+2+3==6個,外部區域有2x5=10個;

由此可以發現規律:一條直線的時候內部區域m1=0;外部區域m2=1 x 2;

兩條線的時候m1=0;m2=2 x 2;

三條線的時候m1=1;m2=2 x 3;

四條線的時候m1=1+2=3;m2=2 x 4;

……n條線的時候m1=1+2+3+……+n-2;m2=2 x n;

因此,n條直線最多分割的區域有m=m1+m2個;

由直線的規律,接下來看看折線的區別:

ac**

#include

intmain

(void

) sum2 =2*

2* n;

printf

("%lld\n"

,sum1 + sum2 -

2* n);}

return0;

}

HDU 折線分割平面 遞推

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

折線分割平面問題

time limit 1 sec memory limit 128 mb submit 62 solved 35 submit status web board 我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,...

折線分割平面 (hdu 2050)

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