暑假集訓 遞推 P 折線分區域

2021-07-04 01:17:42 字數 3902 閱讀 3701

p - 折線分區域

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

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

input

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

output

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

sample input

212 

sample output

2

7

分析:

解題思路:

1遞推遞推,先分析下直線分割平面的情況,增加第n條直線的時候,跟之前的直線最多有n-1個交點,此時分出的部分多出了

(n-1)+1;所以f[n]=f[n-1]+n-1+1;

2折線也是同理,f(1)=2,f(2)=7,先畫好前面n-1條折線

當增加第n條拆線時,此時折線中的一條與圖形的交點最多有2*(n-1)

因為n-1條折線相當於2*(n-1)條直線,那麼一條折線就有2*2(n-1)個交點,

所以分出的部分多出了2*2(n-1)+1所以推出f(n)=f(n-1)+4*(n-1)+1,n>=2

還有f[n]=n(2n-1)+1,這是從遞推公式中推出來的; 2

3456

78910

1112

1314

1516

#include

intmain

()return0;

}

b - 三角形

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

用n個三角形最多可以把平面分成幾個區域? 

input

輸入資料的第一行是乙個正整數t(1<=t<=10000),表示測試資料的數量.然後是t組測試資料,每組測試資料只包含乙個正整數n(1<=n<=10000).

output

對於每組測試資料,請輸出題目中要求的結果. 

sample input

212 

sample output

2

8

3  三角形也去遞推,f[1]=2;f[2]=8;增加的交點和增加的部分相同

平面本身是1部分.乙個三角形將平面分成三角形內、外2部分,即增加了1部分,

兩個三角形不相交時將平面分成3部分,相交時,交點越多分成的部分越多(見下圖);

當增加第n個三角形時,三角形的一條邊只能跟別的三角形的兩條邊相交

那麼交點就增加了2(n-1),三條邊就增加了3*2(n-1)個交點

所以推出f[n]=f[n-1]+6*(n-1);

另外,因為1個三角形時有2部分,所以n個三角形最多將平面分成的部分數是:

2+6×[1+2+…+(n-1)]=2+3n(n-1)

123

4567

891011

1213

1415

#include

intmain

()return0;

}

p - 折線分區域

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

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

input

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

output

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

sample input

212 

sample output

2

7

分析:

解題思路:

1遞推遞推,先分析下直線分割平面的情況,增加第n條直線的時候,跟之前的直線最多有n-1個交點,此時分出的部分多出了

(n-1)+1;所以f[n]=f[n-1]+n-1+1;

2折線也是同理,f(1)=2,f(2)=7,先畫好前面n-1條折線

當增加第n條拆線時,此時折線中的一條與圖形的交點最多有2*(n-1)

因為n-1條折線相當於2*(n-1)條直線,那麼一條折線就有2*2(n-1)個交點,

所以分出的部分多出了2*2(n-1)+1所以推出f(n)=f(n-1)+4*(n-1)+1,n>=2

還有f[n]=n(2n-1)+1,這是從遞推公式中推出來的; 2

3456

78910

1112

1314

1516

#include

intmain

()return0;

}

b - 三角形

time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u

submit

status

description

用n個三角形最多可以把平面分成幾個區域? 

input

輸入資料的第一行是乙個正整數t(1<=t<=10000),表示測試資料的數量.然後是t組測試資料,每組測試資料只包含乙個正整數n(1<=n<=10000).

output

對於每組測試資料,請輸出題目中要求的結果. 

sample input

212 

sample output

2

8

3  三角形也去遞推,f[1]=2;f[2]=8;增加的交點和增加的部分相同

平面本身是1部分.乙個三角形將平面分成三角形內、外2部分,即增加了1部分,

兩個三角形不相交時將平面分成3部分,相交時,交點越多分成的部分越多(見下圖);

當增加第n個三角形時,三角形的一條邊只能跟別的三角形的兩條邊相交

那麼交點就增加了2(n-1),三條邊就增加了3*2(n-1)個交點

所以推出f[n]=f[n-1]+6*(n-1);

另外,因為1個三角形時有2部分,所以n個三角形最多將平面分成的部分數是:

2+6×[1+2+…+(n-1)]=2+6×

n(n-1)2

=2+3n(n-1)

123

4567

891011

1213

1415

#include

intmain

()return0;

}

折線分割平面(遞推)

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

暑假集訓第二週 遞推 S 棋盤遊戲

s 棋盤遊戲 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小兔有所失望。不過...

暑假集訓總結

華信暑假集訓總結 暑假乙個月的總結 第一 就是不夠細心,關於這一點,在前兩次的總結都有提到,但是自己這次還是沒有改正過來,說明自己確實是粗心,不過在以後的學習過程中還是要克服這個問題!第二 自己寫的 結構很亂,模擬較多時,經常都會找不到自己在 定義的,這個又是在 寫的。所以在接下來的過程中,自己還是...