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 段數路時,將其高度調整為...