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|的最小值。
271 3 2 4 5 3 9
58 6 5 6 2
31
第七屆河南省賽
題解:把一串串行變為一段連續不增,或者連續不減的最小花費;
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決定募捐資金重新修建著條路。由於資金有限,為了降低成本,對修好後的路面高度只能做到單調上公升或單調下降。為了便於修路,我們將整個...