藍橋試題 演算法提高 和諧宿舍2

2021-10-03 08:13:18 字數 1657 閱讀 7282

我的某室友學過素描,牆上有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 塊的矩形木板,把這些作品和諧掉。要求木板也從左到右排成一排,且底邊與作品的底邊在同一水平線上。在能夠把所有作品和諧掉...