acm第四次貪心演算法

2021-09-13 02:11:43 字數 700 閱讀 8006

貪心的題比stl感覺簡單多了,但是自己在做題時,還是缺乏貪心的思路,總是超時,唉,acmer之路長慢慢~

一:貪心演算法

1、貪心演算法是一種在每一步選擇中都採取在當前狀態下最好或最優的選擇,希望得到結果是最好或最優的演算法。

2、貪心演算法是一種能夠得到某種度量意義下的最優解的分級處理方法,通過一系列的選擇得到乙個問題的解,而它所做的每一次選擇都是當前狀態下某種意義的最好選擇。即希望通過問題的區域性最優解求出整個問題的最優解。

3、這種策略是一種很簡潔的方法,對許多問題它能產生整體最優解,但不能保證總是有效,因為它不是對所有問題都能得到整體最優解。

4、利用貪心策略解題,需要解決兩個問題:

(1)該題是否適合於用貪心策略求解;

(2)如何選擇貪心標準,以得到問題的最優/較優解。

5、使用貪心演算法求解問題步驟:

(1)候選集合a:為了構造問題的解決方案,有乙個候選集合a作為問題的可能解,即問題的最終解均取自於候選集合a。

(2)解集合s:隨著貪心選擇的進行,解集合s不斷擴充套件,直到構成滿足問題的完整解。

(3)解決函式solution:檢查解集合s是否構成問題的完整解。

(4)選擇函式select:即貪心策略,這是貪心法的關鍵,它指出哪個候選物件最有希望構成問題的解,選擇函式通常和目標函式有關。

(5)可行函式feasible:檢查解集合中加入乙個候選物件是否可行,即解集合擴充套件後是否滿足約束條件。

ACM第四次練習 1002

題意 求給定的點之間連通的最小距離。思路 最小生成樹的演算法,其核心是每次取最短的邊,看該邊相連的兩點是否在同乙個集合內,若在則跳過,若不在,就把兩個點合併,判斷與合併都用並查集實現。感想 開始的時候將邊初始化成了0,懵逼了 include include include include int f...

ACM第四次練習 1011

思路 這是一道最短路問題,可以用dijkstra或spfa解決。求出所有出發的站到所有終點站的最短路徑中的最小值,這樣就重複多次呼叫dijkstra 或 spfa,但如果運用一些技巧就可大大優化,題目中a,b均是大於1的,所以可以在設乙個點作為草兒的家的位置且該點的序號為0,只要把該點與所有始發站之...

ACM第四次練習 1013

題意 先給出了乙個 這個 也表示路程和花費的模板,然後根據這個對下面的問題進行解決,然後第三行給的是n,m,緊接著就是n行,表示的是0到1的距離,0到2的距離,0到3的距離。依次下去。接下來的m行表示的就是要求的起點和終點了。思路 直接用dijkastra就ok了 稍稍做一點點的變形,要注意的本題資...