• 严格单调递增与非严格之间的转换


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

  • 相关阅读:
    GitHub Interesting Collection
    使用 CSS3 Flexible Boxes 布局
    消失的属性
    浅谈 JavaScript 模块化编程
    为你的 Javascript 加点咖喱
    软件测试
    osi七层模型
    3_Hydra(爆破神器)
    2_NC(瑞士军刀)
    1_HTTP协议详解
  • 原文地址:https://www.cnblogs.com/Drenight/p/8611766.html
Copyright © 2020-2023  润新知