本學期所學的acm已經算是告一段落了,總體來說,對它的感覺是有喜有悲,喜的是從這裡學到了對待問題的思維方式,悲的是acm的相關題目還是不算容易,一道簡單題有可能還得花上一些時間方可ac,不過a過一道題後的喜悅是不言而喻的。廢話不多說,下面來對本學期的acm課程做個總結。
三、 動態規劃
基礎知識:
什麼是動態規劃呢,簡單來說,動態規劃是解決多階段決策問題的一種方法。多階段決策問題是說如果一類問題的求解過程可以分為若干個互相聯絡的階段,在每乙個階段都需作出決策,並影響到下乙個階段的決策。多階段決策問題,就是要在可以選擇的那些策略中間,選取乙個最優策略,使在預定的標準下達到最好的效果。
動態規劃的指導思想就是在做每一步決策時,列出各種可能的區域性解;依據某種判定條件,捨棄那些肯定不能得到最優解的區域性解;以每一步都是最優的來保證全域性是最優的。
動態規劃問題具有以下基本特徵:
問題具有多階段決策的特徵;
每一階段都有相應的「狀態」與之對應,描述狀態的量稱為「狀態變數」;
每一階段都面臨乙個決策,選擇不同的決策將會導致下一階段不同的狀態;
每一階段的最優解問題可以遞迴地歸結為下一階段各個可能狀態的最優解問題,各子問題與原問題具有完全相同的結構。
動態規劃問題的一般解題步驟
1、判斷問題是否具有最優子結構性質,若不具備則不能用動態規劃。
2、把問題分成若干個子問題(分階段)。
3、建立狀態轉移方程(遞推公式)。
4、找出邊界條件。
5、將已知邊界值帶入方程。
6、 遞推求解。
四、 圖演算法
圖 (graph) 是一種複雜的非線性資料結構,由頂點集合及頂點間的關係(也稱弧或邊)集合組成。可以表示為: g=(v, )
其中 v 是頂點的有窮非空集合; vr 是頂點之間關係的有窮集合,也叫做弧或邊集合。弧是頂點的有序對,邊是頂點的無序對。
度:無向圖中頂點 v 的度是和 v 相關聯的邊的數目,記為td(v)。
入度:有向圖中以頂點 v 為終點的弧數目稱為 v 的入度,記id(v)。
出度:有向圖中以頂點 v 為起點的弧數目稱為 v 的出度,記od(v)。
度:入度和出度之和,即:td(v) = id(v) + od(v)。
如果頂點 vi 的度為 td(vi),則乙個有 n 個頂點e 條邊(弧) 的圖,滿足如下關係:
終端頂點:有向圖中把出度為 0的頂點稱為終端頂點。
路徑:從頂點v到v´的路徑是乙個頂點序列 (v= vi, 0, vi, 1, …, vi, m=v´),滿足 (vi, j-1, vi, j)vr 或
ACM課程總結
漸漸地,理解了貪心演算法,貪心標準選好了問題就會變得特別簡單,其實acm越難的部分也是秀的體現,難點解決出來的結果總是特別巧妙,典型的題型就是老師最開始講的吃金幣問題,活動安排問題,特別是吃金幣的問題,這是我真正意義上的學到陣列可以表示結果,然後就是貪心演算法大多都要用到sort函式,而用sort函...
ACM課程心得
ios sync with stdio false 在c 中的輸入和輸出有兩種方式,一種是scanf和printf,另一種是cin和cout,這兩種方法看似,實則相差很大 一.首先,scanf與printf使用的標頭檔案是stdio.h cin與cout的標頭檔案是 iostream 二.兩者在效率...
ACM課程心得
課程上介紹到了記憶化搜尋 1.記憶化搜尋的實質是動態規劃,效率也和動態規劃接近,形式是搜尋,簡單直觀,也容易編寫,不需要進行什麼拓撲排序了。可以歸納為 記憶化搜尋 搜尋的形式 動態規劃的思想 在數塔例題中的應用 在求max 2,1 max 2,2 的時候兩次呼叫函式max 3,2 也就是說,函式ma...