Problem\mathrm{Problem}Problem
Solution\mathrm {Solution}Solution
对于这道题,我们首先需要知道一个贪心的结论:
- 如果要使最后的干草堆尽量高,最小面的那一堆一定要尽量小 。
但是知道了这个结论,我们仍然无法知道具体的叠的方案是怎么样的,我们考虑动态规划。
我们可以将数组翻转,求前缀和,自底向上DP。设f[i]f[i]f[i]表示到第iii块为止,一共能够叠的最高的塔。
考虑如何转移最优,我们发现f的决策一定具有单调性,即越多方块能叠越高的塔。
显然有f[i]=f[j]+1f[i]=f[j]+1f[i]=f[j]+1
那么考虑如何得到jjj。我们能够发现有若干个最优的决策f[i]f[i]