題意:給出n本書 每本書有高度和寬度,題意讓我們先講高度排序(保證每一本書的高度不同,從大從小排對答案不影響)
相鄰的書的寬度差的絕對值為貢獻,讓我們去掉其中k本書,求最小貢獻
思路:去掉書的想法很難實現,我們逆向思維,在其中增加n-k本書
那我們設定乙個dp【i】【j】表示第i本書前面的所有書(包括第i本)選擇j本情況下的最優值
那麼答案就應該是從(n-k,n)選擇乙個最優值,因為我們是在某一本必選的情況下選擇的最優
所以在不選這本的情況下可能不是最優,所以最後還需要再列舉一遍哪個最優
這是最後一部分,我們再來講講前面一部分
在列舉前i本書的情況下,我們再開一維來列舉前i本書放l本的情況
然後再列舉放l本時的最優值即可
**如下:
1 #include2view codeusing
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
P1103 書本整理
frank是乙個非常喜愛整潔的人。他有一大堆書和乙個書架,想要把書放在書架上。書架可以放下所有的書,所以frank首先將書按高度順序排列在書架上。但是frank發現,由於很多書的寬度不同,所以書看起來還是非常不整齊。於是他決定從中拿掉k本書,使得書架可以看起來整齊一點。書架的不整齊度是這樣定義的 每...
P1103 書本整理 dp
frank是乙個非常喜愛整潔的人。他有一大堆書和乙個書架,想要把書放在書架上。書架可以放下所有的書,所以frank首先將書按高度順序排列在書架上。但是frank發現,由於很多書的寬度不同,所以書看起來還是非常不整齊。於是他決定從中拿掉k本書,使得書架可以看起來整齊一點。書架的不整齊度是這樣定義的 每...
題解 P1103 書本整理
一道很好的dp入門題,適合像我這種學了大半年卻還不會dp的人。首先,題目要求我們將書本按照高度排序,在這裡我們可以用結構體實現。其次才是重點,推dp方程。題目中說抽走k本書,我們不妨轉換一下 從n本書中留下 n k 本。然後,尋找每本書之間的關係 對於第一本書,如果留下,花費顯然只能是0。對於第二本...