P1103 書本整理

2022-06-02 05:30:10 字數 706 閱讀 7603

題意:給出n本書 每本書有高度和寬度,題意讓我們先講高度排序(保證每一本書的高度不同,從大從小排對答案不影響)

相鄰的書的寬度差的絕對值為貢獻,讓我們去掉其中k本書,求最小貢獻

思路:去掉書的想法很難實現,我們逆向思維,在其中增加n-k本書

那我們設定乙個dp【i】【j】表示第i本書前面的所有書(包括第i本)選擇j本情況下的最優值

那麼答案就應該是從(n-k,n)選擇乙個最優值,因為我們是在某一本必選的情況下選擇的最優

所以在不選這本的情況下可能不是最優,所以最後還需要再列舉一遍哪個最優

這是最後一部分,我們再來講講前面一部分

在列舉前i本書的情況下,我們再開一維來列舉前i本書放l本的情況

然後再列舉放l本時的最優值即可

**如下:

1 #include2

using

namespace

std;

3int n,k,m,min=0x3f3f3f3f;4

int f[501][501];5

//f[i][l]:以i作末尾,選了l本書時的最小花費

6struct

info

7a[1001

];10

bool cmp(const info & x, const info &y)

1114

intmain()

15

view code

P1103 書本整理

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

P1103 書本整理 dp

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

題解 P1103 書本整理

一道很好的dp入門題,適合像我這種學了大半年卻還不會dp的人。首先,題目要求我們將書本按照高度排序,在這裡我們可以用結構體實現。其次才是重點,推dp方程。題目中說抽走k本書,我們不妨轉換一下 從n本書中留下 n k 本。然後,尋找每本書之間的關係 對於第一本書,如果留下,花費顯然只能是0。對於第二本...