严格单调递增与非严格之间的转换
①把序列A改成非严格单调递增,至少需要修改序列长减去A的最长不下降子序列长度个数字
②把序列A改成严格单调递增,需要构造序列Bi=Ai-1,然后用上面的方法来求
如果直接用序列长减去A的LIS是不对的,例如112233,关键这里存在数字过于密集的情况,
而构造B序列【1,0,0,-1,-1,2】之后就去除了值域的限制,回归到第一个问题\
首先a数组各位减去i,b数组拷贝一份a拿去排序
这里可以离散化A数组,DP[i][j]表示构造前i个数字,最后一个是A数组中第j大的最小误差
dp[i][j]=min(dp[i-1][k])+abs(a[i]-b[j]),由于可选状态dp[i-1][k]的k是越来越大的,
所以决策集合只增大不减小,可以维护一个决策集合的最优值来O(1)做到k的决策