C++ 使用动态编程使数组非递减的步骤
我是在一次编程竞赛中遇到这个问题的,我认为DP可以解决这个问题,但我想不出任何问题,所以请大家帮忙。以下是问题: 有n堆硬币呈线性排列,每个标记从1到n。你还有一袋硬币,里面装着无限多的硬币。叠里和袋子里的所有硬币都是一样的。你所要做的就是使硬币的高度不降低C++ 使用动态编程使数组非递减的步骤,c++,sorting,dynamic-programming,lcs,C++,Sorting,Dynamic Programming,Lcs,我是在一次编程竞赛中遇到这个问题的,我认为DP可以解决这个问题,但我想不出任何问题,所以请大家帮忙。以下是问题: 有n堆硬币呈线性排列,每个标记从1到n。你还有一袋硬币,里面装着无限多的硬币。叠里和袋子里的所有硬币都是一样的。你所要做的就是使硬币的高度不降低 No. of Test Cases < 50 1 <= n <= 10^5 0 <= hi <= 10^9 您选择两个堆叠i和j,并将一枚硬币放置在从堆叠i到堆叠j(包括)的每一堆叠硬币上。这一完整
No. of Test Cases < 50
1 <= n <= 10^5
0 <= hi <= 10^9
您选择两个堆叠i和j,并将一枚硬币放置在从堆叠i到堆叠j(包括)的每一堆叠硬币上。这一完整的操作被视为一个动作。必须尽量减少移动次数,以使高度不降低
No. of Test Cases < 50
1 <= n <= 10^5
0 <= hi <= 10^9
这不是个合适的地方,参观一下那真是一个非常非常无聊的问题。。。只要在图表纸上画一条上下的线,很明显,你必须从下往上填充,一次一个水平段(也就是说,做跨越高度的填充没有任何好处)。唯一的另一个洞见是,保持高度降低的位置堆栈确保在找到增加位置时,您可以快速确定从何处开始填充。