洛谷P1103 書本整理

2021-07-24 03:32:07 字數 1135 閱讀 3057

frank是乙個非常喜愛整潔的人。他有一大堆書和乙個書架,想要把書放在書架上。書架可以放下所有的書,所以frank首先將書按高度順序排列在書架上。但是frank發現,由於很多書的寬度不同,所以書看起來還是非常不整齊。於是他決定從中拿掉k本書,使得書架可以看起來整齊一點。

書架的不整齊度是這樣定義的:每兩本書寬度的差的絕對值的和。例如有4本書:

1x2 5x3 2x4 3x1 那麼frank將其排列整齊後是:

1x2 2x4 3x1 5x3 不整齊度就是2+3+2=7

已知每本書的高度都不一樣,請你求出去掉k本書後的最小的不整齊度。

輸入格式:

第一行兩個數字n和k,代表書有幾本,從中去掉幾本。(1<=n<=100, 1<=k<=n)

下面的n行,每行兩個數字表示一本書的高度和寬度,均小於200。

保證高度不重複

輸出格式:

一行乙個整數,表示書架的最小不整齊度。

輸入樣例#1:

4 1

1 22 4

3 15 3

輸出樣例#1:
3
但看去掉幾本書是不好寫方程的,看成從 n 本書裡挑 n - k 本,那麼轉移方程就是 f [ i ][ j ] = min( f [ i ] [ j ] , f[ k ][ j-1 ] + abs( num[i] - num[k])); f [ i ][ j ] 為前 i 本書選 j 本且第 i 本選上的最小代價,初始化的話, f [ i ][ 1 ] = 0;

**如下

#include

#include

#include

#include

using

namespace

std;

const

int size = 210;

int read()

while(in >= '0' && in <= '9')

return x * f;

}struct book

}b[size];

int num[size];

int n,p;

int f[size][size];

int main()

P1103 書本整理(洛谷)

frank是乙個非常喜愛整潔的人。他有一大堆書和乙個書架,想要把書放在書架上。書架可以放下所有的書,所以frank首先將書按高度順序排列在書架上。但是frank發現,由於很多書的寬度不同,所以書看起來還是非常不整齊。於是他決定從中拿掉k本書,使得書架可以看起來整齊一點。書架的不整齊度是這樣定義的 每...

動態規劃 洛谷P1103 書本整理

frank是乙個非常喜愛整潔的人。他有一大堆書和乙個書架,想要把書放在書架上。書架可以放下所有的書,所以frank首先將書按高度順序排列在書架上。但是frank發現,由於很多書的寬度不同,所以書看起來還是非常不整齊。於是他決定從中拿掉k本書,使得書架可以看起來整齊一點。書架的不整齊度是這樣定義的 每...

洛谷 P1103 書本整理(動規)

洛谷 p1103 書本整理 frank是乙個非常喜愛整潔的人。他有一大堆書和乙個書架,想要把書放在書架上。書架可以放下所有的書,所以frank首先將書按高度順序排列在書架上。但是frank發現,由於很多書的寬度不同,所以書看起來還是非常不整齊。於是他決定從中拿掉k本書,使得書架可以看起來整齊一點。書...