L2 遞推 遞迴 分治

2021-10-08 16:58:27 字數 2564 閱讀 6342

f1–>fn:順推法,對應遞推

fn–>f1:倒推法,對應遞迴

怎麼解決遞推的問題

找到初始狀態——找到遞推公式——開始迴圈算即可

自己找到遞推關係!!!

用遞推的方式求 fibonacci 數列

f[0]

=0;f[

1]=1

;for

(int i=

2;i<=n;i++

) f[i]

=f[i-1]

+f[i-2]

;

簡單的排列組合:

· 排列:從n個數中有序地選出m個數 a(n,m)=n!/(n-m)!;

* 第乙個數有n種取法,第二個數有n-1種取法…第m個數有(n-m+1)種取法

* n*(n-1)…(n-m-1)=n!/(n-m)!

* 記為a(n,m)

· 組合:從n個數中無序地選出m個數 c(n,m)=a(n,m)/m!;

* 先有序地取m個數

* 那麼無序的m個數會被取到m! 次

* 記為 c(n,m) = a(n,m)/m! = n! / [ m! (n-m)! ]

·組合數 c(n,m) 的遞推式:c(n,m)=c(n-1,m)+c(n-1,m-1);

* n個數,選m個,若沒選最後乙個,則為 c(n-1,m) // 成了從(n-1)個數中選m個了

* 若選了最後乙個數,則為 c(n-1,m-1) // 成了從(n-1)個數中選(m-1)個了

* 因為是分步計數,所以相加

·可能有用的數學結論:

c(n, 0) + c(n, 1) + … + c(n, n-1) + c(n, n) = 2n;

c(n,0) + c(n,2) + … + c(n,n) = c(n,1) + c(n,3) + … + c(n,n-1) = 2n-1

· 為了求 f(n),必須先求 f(n-1);為了求 f(n-1),必須去求 f(n-2)…為了求 f(1),必須先求 f(0),而 f(0) 是已知的。

· 這種定義函式的方式成為遞迴定義。

· 乙個遞迴定義必須是有終結的。終結條件稱為遞迴邊界。

· 描述遞迴定義的函式或求解遞迴問題的過程稱為遞迴演算法。

遞迴演算法一般是用在三個場合:

· 資料的定義形式是遞迴的,如求 fibonacci 數列問題;

· 資料之間的邏輯關係(即資料結構)是遞迴的,如樹、圖等的定義和操作;

· 某些問題雖然沒有明顯的遞迴關係或結構,但問題的解法是不斷重複執行一種操作,只是問題規模由大化小,直至某個原操作(基本操作)就結束,如漢諾塔問題,這種問題使用遞迴思想來求解比其他方法更簡單。

用遞迴的方式求 fibonacci 數列

intf(

int n)

但可以發現,對於乙個值我們重複計算了多次,能不能把它記下來讓它只計算一次呢?

記憶化搜尋

int f[maxn]

;memset

(f,-1,

sizeof

(f));f[

0]=0

; f[1]

=1;intf(

int n)

// 用乙個陣列記一下算過的數

分治就是分而治之,把乙個問題劃分成若干個同樣的小問題,然後各個擊破。

分支和遞迴思想是一脈相承的,大化小,小化了。

快速冪  時間複雜度 o(log2n) 即 o(logn)

* 考慮計算 an

* n是偶數,an = an/2 x an/2;n是奇數,an = a(n-1)/2 x a(n-1)/2 x a;

* 這樣每次只要計算 an/2 或 a(n-1)/2,n的規模減半

例題:洛谷 p3414(數學+快速冪)

int

pow_mod

(unsigned

long

long a,

unsigned

long

long n,

int mod)

}

歸併排序基於分治思想

· 歸併排序乙個很重要的應用就是求逆序對 

· 逆序對:對於給定的一段正整數序列,逆序對就是序列中 a[ i ] > a[ j ] 且 i < j 的有序對

· 做法:

先考慮求 [ l, r ] 當中的逆序對個數,先求出中點m,然後將逆序對分為兩種:跨越中點m的和不跨越中點m的

- 對於不跨越中點的,把它看成 [ l, m ], [ m+1, l ] 兩個子問題

- 對於跨越中點的,考慮用歸併排序的方法,在求逆序對的時候順便排好序。逆序對的兩個元素乙個在左邊的序列,乙個在右邊的序列。那麼每次就是對於兩個有序的序列統計,有多少個逆序對。用 cnt 記錄逆序對的數量,用輔助陣列記錄排好順序的數列。

· 例題:洛谷 p1908

序列的分支問題有乙個很常見的套路:

· 把區間二分,先解決每個區間內的,再考慮跨越端點的

· 例題:洛谷 p1115

IT日語L2單語

no假名 漢字詞形 英語漢語 1 名manner 禮節,規矩 2 大切形動重要3 儀禮名禮儀 4 大事名,形動重要5 進 他一 促進,推進 6 副正確地,合適地 7 付 合 名交往,交際 8 挨拶名,自 寒暄9 名刺交換 名交換名片 10 不可欠名,形動 不能缺少的 11 客 名客人 12 與 他一...

L2 緊急救援

l2 001 緊急救援 25分 作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上...

L2 深入虎穴

著名的王牌間諜 007 需要執行一次任務,獲取敵方的機密情報。已知情報藏在乙個地下迷宮裡,迷宮只有乙個入口,裡面有很多條通路,每條路通向一扇門。每一扇門背後或者是乙個房間,或者又有很多條路,同樣是每條路通向一扇門 他的手裡有一張 是其他間諜幫他收集到的情報,他們記下了每扇門的編號,以及這扇門背後的每...