[SP1839]The Bookcase

The Bookcase

题解

蛮简单的一道题

看到这道题应该很容易想到数位dp。但如果直接把高度,厚度全加到维度上去明显会MLE。

我们定义dp_{i,j,k}为前i本书放到书架上第1行厚度为j,第二行厚度为k时的每行最大高度之和,第三行的厚度可以通过前缀和算出来。

由于不知道每行书的高度,我们可以先将所有的书根据高度排序,这样保证加进去时一行如果有书就一定不会增加高度,这样如果一行厚度为0就没书。

这样,很容易就可以得到状态转移方程式了,这里不列出。

时间复杂度O\left(n^3t^2 \right )

注意,三行都必须有书。

源码

#include<cstdio>
#include<cmath
posted @ 2020-10-24 17:11  StaroForgin  阅读(12)  评论(0)    收藏  举报  来源