zoukankan      html  css  js  c++  java
  • 严格单调递增与非严格之间的转换

    ①把序列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的决策

  • 相关阅读:
    智联招聘
    我的Linux以及软件配置(长期更新)
    关于Git的笔记
    PHP和HTML表单
    web学习笔记——CSS整理(一)
    新开通博客园
    Thinphp模板替换
    __APP__
    大步前行
    centos 7 添加环境变量
  • 原文地址:https://www.cnblogs.com/Drenight/p/8611766.html
Copyright © 2011-2022 走看看