我在编程竞赛中遇到了这个问题,我认为它可以通过DP解决但却无法想到,所以请帮助。这是任务:
有n堆硬币线性放置,每个硬币标记为1到n。你还有一袋装有无限硬币的硬币。堆栈和麻袋中的所有硬币都是相同的。你所要做的就是让硬币的高度不降低。
您选择两个堆栈i和j,并在堆栈'i'到堆栈'j'(包括)的每一堆硬币上放置一个硬币。这一完整的操作被视为一举一动。您必须尽量减少移动次数,使高度不降低。
No. of Test Cases < 50
1 <= n <= 10^5
0 <= hi <= 10^9
输入规范: 会有一些测试用例。读到EOF。每个测试用例的第一行将包含单个整数n,第二行包含n个高度(h [i])的堆栈。
输出规格: 输出单个整数,表示每个测试用例的移动次数。
for eg: H={3,2,1}
answer is 2
step1: i=2, j=3, H = {3,3,2}
step2: i=3, j=3, H = {3,3,3}