Algorithm 最小成本递增子序列
假设我们有一个包含N个整数的数组A。问题是,我们希望最小化从位置1开始到位置N结束的某些递增子序列(不一定严格递增)的成本。子序列的总成本是子序列中元素之间转换的总成本。在构建子序列时,从位置j转换到位置i(其中i>=j)的成本可以在矩阵成本[i][j]中找到。可以保证存在从位置1开始到位置N的递增子序列。数组中的值可能非常大 例如: N=5 A=[0,3,2,3,3] 成本= [0,INF,INF,INF,INF] [3,0,INF,INF,INF] [3,INF,0,INF,INF] [5,2,2,0,INF] [6,0,3,1,0]] 成本增加最少的子序列是(A[1]、A[2]、A[5])或(0,3,3) 代价 是成本[2][1]+成本[5][2]=3+0=3 到目前为止,我已经能够修改传统的O(n^2)dp解决方案,方法是将dp[I]初始化为无穷大,dp[1]初始化为0,然后循环所有以前的值以扩展子序列。在迭代之前的值时,我只需保持最小成本Algorithm 最小成本递增子序列,algorithm,sorting,dynamic-programming,binary-search,Algorithm,Sorting,Dynamic Programming,Binary Search,假设我们有一个包含N个整数的数组A。问题是,我们希望最小化从位置1开始到位置N结束的某些递增子序列(不一定严格递增)的成本。子序列的总成本是子序列中元素之间转换的总成本。在构建子序列时,从位置j转换到位置i(其中i>=j)的成本可以在矩阵成本[i][j]中找到。可以保证存在从位置1开始到位置N的递增子序列。数组中的值可能非常大 例如: N=5 A=[0,3,2,3,3] 成本= [0,INF,INF,INF,INF] [3,0,INF,INF,INF] [3,INF,0,INF,INF] [5,
现在我想改进这个解决方案,使其成为o(nlogn)。我知道常规的LIS问题可以通过数组和二进制搜索来解决,但我无法修改这种方法来适应这个问题。在我看来,它更像是一个图形最短路径问题,而不是LIS。在我看来,它更像是一个图形最短路径问题,而不是LIS。