p - 折線分區域
time limit:1000msmemory limit:32768kb64bit io format:%i64d & %i64u
submit
status
description
我們看到過很多直線分割平面的題目,今天的這個題目稍微有些變化,我們要求的是n條折線分割平面的最大數目。比如,一條折線可以將平面分成兩部分,兩條折線最多可以將平面分成7部分,具體如下所示。
input
輸入資料的第一行是乙個整數c,表示測試例項的個數,然後是c 行資料,每行包含乙個整數n(0
output
對於每個測試例項,請輸出平面的最大分割數,每個例項的輸出佔一行。
sample input
212sample 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
212sample output
23 三角形也去遞推,f[1]=2;f[2]=8;增加的交點和增加的部分相同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)
1234567
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
212sample 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
212sample output
23 三角形也去遞推,f[1]=2;f[2]=8;增加的交點和增加的部分相同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)
1234567
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 小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小兔有所失望。不過...
暑假集訓總結
華信暑假集訓總結 暑假乙個月的總結 第一 就是不夠細心,關於這一點,在前兩次的總結都有提到,但是自己這次還是沒有改正過來,說明自己確實是粗心,不過在以後的學習過程中還是要克服這個問題!第二 自己寫的 結構很亂,模擬較多時,經常都會找不到自己在 定義的,這個又是在 寫的。所以在接下來的過程中,自己還是...