山區修路 2018省賽

2021-10-22 12:12:57 字數 1649 閱讀 1118

snj位於hb省西部一片群峰聳立的高大山地,橫亙於a江、b水之間,方圓數千平方公里,相傳上古的神醫在此搭架上山採藥而得名。景區山峰均在海拔3000公尺以上,堪稱"華中屋脊"。snj是以秀綠的亞高山自然風光,多樣的動植物種,人與自然和諧共存為主題的森林生態區。

snj處於中國地勢第二階梯的東部邊緣,由大巴山脈東延的餘脈組成中高山地貌,區內山體高大,高低不平。 交通十分不便。

最近,hb省決定修一條從yc市通往snj風景區的高速公路。經過勘測分析,途中需要經過高度分別為h1,h2,……,hn的n個山區。由於高低不平,除正常的修路開支外,每段還要多出高度差|hi - hi-1|*x萬元的斜坡費用。dr. kong 決定通過填高一些區域的高度來降低總的費用。當然填高也是需要一些費用的。每填高y單位,需要付出y2萬元費用。

你能否幫dr. kong做出乙個規劃,通過部分填高工程改造,使得總的費用降下來。

輸入第一行: t 表示以下有t組測試資料 ( 1≤ t ≤8 ) 對每組測試資料, 第一行:n x (2 ≤ n ≤100,000 1≤ x ≤100) 第二行:n個整數,分別表示n個區域的高度hi ( 1<=hi<=100 , i=1…. n)

輸出對每組測試資料,輸出佔一行,乙個整數,即經過部分填高工程改造後的最少費用。

樣例輸入

15 2

2 3 5 1 4

樣例輸出

15

狀態轉移方程dp[i][j]=min(dp[ i ][ j ],abs(k - j)*x+dp[ i - 1 ][ k ]);

起始狀態dp[ 1 ][ i ]=(arr[ 1 ] - i) * (arr[ 1 ] - i) ,先求出第一座山在各種高度的最小花費。

dp[ i ][ j ]表示第i座山高度為 j 時前 i 座山的最小花費,迴圈的時候要注意控制迴圈條件,這種方法如果沒有控制好迴圈條件很容易超時。

遍歷各山高度的時候只需要從當前山的高度遍歷到最大高度即可,小於當前山的高度不予考慮因為題中操作不會讓山更矮。

#include

using

namespace std;

#define inf 0x3f3f3f3f

int dp[

100005][

105]

;//dp[i][j]表示第i坐山高度為j的狀態下,前i坐山總的最少花費。

int arr[

100005];

int t, n, x, ans = inf, mx =0;

intmain()

for(

int i = arr[1]

; i <= mx; i++

)for

(int i =

2; i <= n; i++

) dp[i]

[j]+

=(arr[i]

- j)

*(arr[i]

- j);}

} ans = inf;

for(

int i = arr[n]

; i <= mx; i++

) cout << ans <<

'\n';}

return0;

}

動態規劃這塊兒還是太薄弱了~

第七屆省賽 nyoj1251山區修路

時間限制 1000 ms 記憶體限制 65535 kb難度 2描述 某山區的孩子們上學必須經過一條凹凸不平的土路,每當下雨天,孩子們非常艱難。現在村里走出來的dr.kong決定募捐資金重新修建著條路。由於資金有限,為了降低成本,對修好後的路面高度只能做到單調上公升或單調下降。為了便於修路,我們將整個...

第十一屆河南省賽 C 山區修路 dp

snj位於hb省西部一片群峰聳立的高大山地,橫亙於a江 b水之間,方圓數千平方公里,相傳上古的神醫在此搭架上山採藥而得名。景區山峰均在海拔3000公尺以上,堪稱 華中屋脊 snj是以秀綠的亞高山自然風光,多樣的動植物種,人與自然和諧共存為主題的森林生態區。snj處於中國地勢第二階梯的東部邊緣,由大巴...

NYOJ 1251 山區修路

acm模版 每次看到 dp 問題都能知道是 dp,可是就是反應不過來如何 dp。這次也是這樣,找了找題解,算是搞明白怎麼 dp 了。根據題意我們可以知道,不管怎麼調整,我們都可以通過把路的高度調整為乙個已有的高度來實現結果最優。所以我們可以設,dp i j 表示考慮到第 i 段數路時,將其高度調整為...