Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用动态编程使数组非递减的步骤_C++_Sorting_Dynamic Programming_Lcs - Fatal编程技术网

C++ 使用动态编程使数组非递减的步骤

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(包括)的每一堆叠硬币上。这一完整

我是在一次编程竞赛中遇到这个问题的,我认为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 

这不是个合适的地方,参观一下那真是一个非常非常无聊的问题。。。只要在图表纸上画一条上下的线,很明显,你必须从下往上填充,一次一个水平段(也就是说,做跨越高度的填充没有任何好处)。唯一的另一个洞见是,保持高度降低的位置堆栈确保在找到增加位置时,您可以快速确定从何处开始填充。