ACM第三次練習 1014

2021-07-11 20:12:09 字數 915 閱讀 2083

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

思路:先看

n條相交的直線最多能把平面分割成多少塊

當新增第

n條只顯示,為了使平面最多, 則第

n條直線要與前面的

n-1條直線都相交,且沒有任何三條直線教育乙個點。

則第n條直線有

n-1個交點。由於每增加

n個交點,就增加

n+1個平面,所以用

n條直線來分隔平面,最多的數是

1+1+2+3+

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

再看每次增加兩條相互平行的直線

當第n次新增時,前面已經有

2n-2

條直線了,所以第

n次新增時,第

2n-1

條直線和第

2n條直線都各能增加2*(

n-1)

+1 個平面。

所以第n

次新增增加的面數是

2[2(n-1) + 1] = 4n - 2 

個。因此,總面數應該是

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

2+ 1

如果把每次加進來的平行邊讓它們一頭相交

則平面1、3

已經合為乙個面,因此,每一組平行線相交後,就會較少乙個面

所以所求就是平行線分割平面數減去n

,為2n2-n

+ 1;

利用上述總結公式

f(n)=2n2

-n+ 1。

感想:推導過程有些複雜,但是**很簡單~

**:

#include

int main()

return 0; }

ACM第三次練習 1001

題意 給出序列a 1 a 2 a 3 a n 計算子串行的最大總和。思路 最大子串行是要找出由數組成的一維陣列中和最大的連續子串行。方法是 只要前i項和還沒有小於0子串行就一直往後擴充套件,否則丟棄之前的子串行開始新的子串行,同時記錄各個子串行的和,最後取他們中的最大值。感想 第一道動態規劃題,感覺...

ACM第三次練習 1002

題意 求兩個字串的最長公共子串行。思路 動態的方程在第乙個元素的相等的時,dp 0 0 dp 1 1 1,天哪,這肯定就會出錯了。在處理時可以選擇字元的讀取從第乙個位置開始,或者把 i 號字元的狀態儲存到i 1號位置去,這樣就從1號開始處理了,判定是就是 s1 i 1 s1 j 1 感想 弄了很久,...

ACM第三次練習 1010

題意 有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?思路 搜尋題的感覺,前面幾個數為1,1,2,3,第五個可以這樣考慮 有些走法是和到第四個一樣的,只是最後加了一步,這樣f 5 f 4 x,x表示其他的走法,到第五級時不是走兩步就是一步,一步剛才已經考慮...