第七屆河南省賽10403 D 山區修路(dp)

2022-03-29 03:37:35 字數 2417 閱讀 6893

time limit: 2 sec  memory limit: 128 mb submit: 69  solved: 23 [submit][status][web board]某山區的孩子們上學必須經過一條凹凸不平的土路,每當下雨天,孩子們非常艱難。現在村里走出來的

dr. kong

決定募捐資金重新修建著條路。由於資金有限,為了降低成本,對修好後的路面高度只能做到單調上公升或單調下降。

為了便於修路,我們將整個土路分成了

n段,每段路面的高度分別a1,

a2,….,an

。由於將每一段路墊高或挖低乙個單位的花費成本相同,修路的總費用與路面的高低成正比。

現在dr. kong

希望找到乙個恰好含

n個元素的不上公升或不下降序列b1,

b2,….,bn

,作為修過的路路段的高度。要求:|a1

-b1| + |a2–

b2| + ... + |an-

bn|------>

最小第一行: 

k

表示有多少組測試資料。

接下來對每組測試資料:第1

行:n表示

整個土路分成了n段

第2~n+1行:a

1a2……

an表示每段路面的高度2≤

k≤100

≤ai≤1

07 0≤

n≤500

(i=1,…, n)

所有資料都

是整數。

資料之間有乙個空格。

資料保證|a1

-b1|+|a2-b2

|+ ... +|an-

bn|的最小值不會超過10

9對於每組測試資料,輸出佔一行:| a1-b1|+| a2-b2|+ ... +| an-bn|的最小值。

2

71 3 2 4 5 3 9

58 6 5 6 2

3

1

第七屆河南省賽

題解:把一串串行變為一段連續不增,或者連續不減的最小花費;

dp思想;dp[i][j]代表第i個元素換為第j個值的最小花費;

可列出狀態轉移方程:dp[i][j]=abs(m[i]-n[j])+mn;mn為轉化為1~j間的最小花費;

由於是單調遞增或者單調遞減,只需要公升序降序下n陣列就可以了,對了,n陣列是離散化後的陣列;單增或者單減;

**:

#include#include#include#include#includeusing namespace std;

#define mem(x,y) memset(x,y,sizeof(x))

#define si(x) scanf("%d",&x)

#define sl(x) scanf("%lld",&x)

#define pi(x) printf("%d",x)

#define pl(x) printf("%lld",x)

#define p_ printf(" ")

const int inf=0x3f3f3f3f;

const double pi=acos(-1.0);

typedef long long ll;

const int maxn=510;

int m[maxn],n[maxn];

int dp[maxn][maxn];

int n;

int cmp(int a,int b)

int solve()

} int ans=inf;

for(int i=1;i<=n;i++)

return ans;

}int main()

return 0;

}

有大神用左偏樹,劃分樹寫的。。。。

人家的思路:

2.左偏樹(leftist) o(nlogn)

左偏樹作為一種可並堆在這裡可以起到作用

我們將每來乙個點,把它單獨建一棵左偏樹,然後跟前一區間的左偏樹中的所存的中位數比較,若小於,則和前一區間的左偏樹合併,知道比前一區間所記錄的中位數是小於或等於當前區間的中位數。

怎樣用左偏樹記錄中位數? 很簡單,每棵左偏樹只儲存(n+1)/2 個元素,則樹頂所儲存的最大值即為中位數

注意的是,用左偏樹來求中位數在某些情況下是錯誤的。按照hyh大神的做法,假設現在對於兩個序列 4 5 6 7 8 9 和 1 2 3,合併後其中位數是5。然而,按照左偏樹只存(n+1)/2 個元素的方法,前者只保留 4 5 6, 後者保留 1 2,兩者合併後保留5個元素,所得到的中位數卻是6..

但這道題卻沒影響,至於為什麼? 沒想明白.....

3.劃分樹 

o(nlogn)

既然要求中位數,而且數列又是靜態數列,可以想到用劃分樹來求.劃分樹除了空間比左偏樹大一點之外,執行效率和正確率都比左偏樹要好。左偏樹的常數相對比較大。

NYOJ 海島爭霸(河南省第七屆省賽題目)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。這是乙個由海洋 島嶼和海盜組成的危險世界。傑克船長準備從自己所占...

河南省藍橋杯第七屆省賽 5 消除尾一

題目描述 下面的 把乙個整數的二進位制表示的最右邊的連續的1全部變成0 如果最後一位是0,則原數字保持不變。如果採用 中的測試資料,應該輸出 00000000000000000000000001100111 00000000000000000000000001100000 0000000000000...

第七屆省賽 nyoj1251山區修路

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