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