0

我在编程比赛中遇到了这个问题,我认为它可以由 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} 
4

0 回答 0