我的某室友學過素描,牆上有n張他的作品。這些作品都是寬度為1,高度不定的矩形,從左到右排成一排,且底邊在同一水平線上。
宿舍評比就要來了,為了及格,我們決定買不多於m塊的矩形木板,把這些作品和諧掉。要求木板也從左到右排成一排,且底邊與作品的底邊在同一水平線上。
在能夠把所有作品和諧掉的前提下,我們希望這些木板的面積和最小,問最小面積和。
輸入格式
第一行兩個數n和m,表示作品數和木板數;
第二行n個數hi,表示從左到右第i個作品的高度。
輸出格式
一行乙個數ans,表示答案。
樣例輸入
5 24 2 3 5 4
樣例輸出
22資料規模和約定
對於30%的資料:1<=n,m<=10;
對於100%的資料:1<=n,m<=100,1<=hi<=10000。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
int num[
110]
;int dp[
110]
[110][
110]
;int tree[
410]
;int
build
(int l,
int r,
int now)
build
(l,(l+r)/2
,now*2)
;build
((l+r)/2
+1,r,now*2+
1); tree[now]
=max
(tree[now*2]
,tree[now*2+
1]);
return0;
}int
check
(int l,
int r,
int ll,
int rr,
int now)
int mid=
(l+r)/2
;if(rr<=mid)
return
check
(l,mid,ll,rr,now*2)
;else
if(ll>=mid+1)
return
check
(mid+
1,r,ll,rr,now*2+
1);else
}int
main()
build(1
,n,1);
for(i=
1;i<=n;i++)}
for(j=
2;j<=k;j++)}
}}printf
("%d"
,dp[1]
[n][k]);
return0;
}
試題 演算法提高 和諧宿舍2
設f i j 表示覆蓋到i i這個矩形已經被覆蓋 的時候用了j塊木板的面積最小值,然後我們列舉一下最後一塊木板覆蓋的矩陣是從k到i的 包括k和i矩形 轉移方程 f i j min f i j f k 1 j 1 max len 其中max表示的是k到i矩形裡的高度最大的值,len是i k 1,所以我...
藍橋杯 演算法提高 和諧宿舍2
題目描述 題目描述 我的某室友學過素描,牆上有n張他的作品。這些作品都是寬度為1,高度不定的矩形,從左到右排成一排,且底邊在同一水平線上。宿舍評比就要來了,為了及格,我們決定買不多於m塊的矩形木板,把這些作品和諧掉。要求木板也從左到右排成一排,且底邊與作品的底邊在同一水平線上。在能夠把所有作品和諧掉...
演算法提高 和諧宿舍2
問題描述 我的某室友學過素描,牆上有 n 張他的作品。這些作品都是寬度為 1,高度不定的矩形,從左到右排成一排,且底邊在同一水平線上。宿舍評比就要來了,為了及格,我們決定買不多於 m 塊的矩形木板,把這些作品和諧掉。要求木板也從左到右排成一排,且底邊與作品的底邊在同一水平線上。在能夠把所有作品和諧掉...