NOIP2013提高組初賽難點整理

2021-10-23 23:23:14 字數 1667 閱讀 1469

斐波那契數列的定義如下:f1=

1,f2

=1,f

n=fn

−1+f

(n−2

)(n≥

3)

f_1 = 1, f_2 = 1, f_n = f_ + f_(n - 2) (n \ge 3)

f1​=1,

f2​=

1,fn

​=fn

−1​+

f(​n

−2)(

n≥3)

。如果用下面的函式計算斐波那契數列的第 n 項,則其時間複雜度為( )。

intf(

int n)

【解析】排除法,遞迴呼叫求斐波那契數列第n

nn項。該題的遞迴呼叫樹為二叉樹,呼叫次數即二叉樹的結點個數。所以時間複雜度接近o(2

n)

o(2^n)

o(2n

),因此排除o(1

)o(1)

o(1)

、o (n

)o(n)

o(n)

、o (n

2)

o(n^2)

o(n2)。

具體推導過程,可以參考這篇博文。

現有乙隻青蛙,初始時在 n

nn 號荷葉上。當它某一時刻在 k

kk 號荷葉上時,下一時刻將等概率地隨機跳到 1,2

,…,k

1, 2, …, k

1,2,…,

k號荷葉之一上,直至跳到 1

11 號荷葉為止。當 n=2

n = 2

n=2 時,平均一共跳 2

22 次;當 n=3

n = 3

n=3 時,平均一共跳 2.5

2.52.

5次。則當 n=5

n = 5

n=5 時,平均一共跳()次。

【解析】f(n)表示從1號荷葉跳到n號荷葉的平均次數,那麼:

#include

#include

using

namespace std;

const

int size =

100;

int n, m, p, a[size]

[size]

, count;

void

colour

(int x,

int y)

intmain()

ans =0;

for(i =

1;i <= n;i++

)for

(j =

1;j <= m;j++)if

(a[i]

[j]==0)

cout

}

輸入:

6 5 9

1 42 3

2 43 2

4 14 3

4 55 4

6 4

【解析】深度優先遍歷,求連通塊的大小。注意求到矩陣的第m列即可。

NOIP2013提高組 花匠

花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g 1,g ...

NOIP2013提高組解析

題目描述 轉圈遊戲 火柴排隊 貨車運輸 積木大賽 花匠 華容道day1 轉圈遊戲 最終位置實際上就是 x m 10 k n 快速冪即可。include includeusing namespace std int n,m,k,x int power int k int main 火柴排隊 根據感覺可...

NOIP2013提高組 花匠

題目描述 花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g...