2018寒假集訓 Day2 動態規劃 維修柵欄

2021-08-15 09:58:56 字數 907 閱讀 8283

維修柵欄

問題描述:

小z最近當上了農場主!不過,還沒有來得及慶祝,一件棘手的問題就擺在了小z的面前。農場的柵欄,由於年久失修,出現了多處破損。柵欄是由n塊木板組成的,每塊木板可能已經損壞也可能沒有損壞。小z知道,維修連續m個木板(這m個木板不一定都是損壞的)的費用是sqrt(m)。可是,怎樣設計方案才能使總費用最低呢?小z想請你幫幫忙。

輸入格式:

輸入檔案的第一行包含乙個整數n,表示柵欄的長度。

第二行包含n個由空格分開的整數(長整型範圍內)。如果第i個數字是0,則表示第i塊木板已經損壞,否則表示沒有損壞。

輸出格式:

輸出檔案中僅包含乙個實數,表示最小維修費用。

注意:答案精確到小數點後3位。

資料規模:

30%的資料中,n<=20。

100%的資料中,n<=2500。

輸入 9

0 –1 0 1 2 3 0 –2 0

輸出 3.000

【解題思路】

對於每乙個壞掉木板,我們要思考的就是,加入前面的一起修,還是單獨修,而加入前面木板組的一起修,也要看看是以哪個木板開始木板組,所以,可以寫出狀態轉移方程

f[i]=min(f[i],f[j]+sqrt(i-j));(0

<=j

<=i)

【參考程式】

#include

#include

#include

#include

using

namespace

std;

int n,a[2501];

double f[2501];

int main()

cout

<3)0;}

2018寒假集訓 Day2 動態規劃 挖地雷

挖地雷 mine 在乙個地圖上有n 個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且從編號小的地窖通向編號大的地窖。某人可以從任一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖...

寒假訓練 day2

定義 窮竭搜尋是將所有的可能性羅列出來,在其中尋找答案的方法。主要介紹深度優先搜尋和廣度優先搜尋。廣度優先搜尋 bfs 也是搜尋的手段之一。它與深度優先搜尋類似,從某個狀態出發探索所有可以到達的狀態。不同之處在於搜尋的順序,廣度優先搜尋總是先搜尋距離初始狀態近的狀態。總結 廣度優先搜尋與深度優先搜尋...

省隊集訓DAY2

假設我們列舉數列中長度為len的區間,那麼如何判斷兩個數列可以匹配呢?對於提取的數列從小到大排序,從大到小排序,然後兩兩配對,如果所有的都滿足 h 那麼就可以匹配。應該算是貪心吧。這樣做的時間複雜度是o n le n loglen 還是上面的思想,我們如何快速判斷呢?假設我們確定了提取出的區間數列,...