zoukankan      html  css  js  c++  java
  • dp凸优化/带权二分 学习笔记

    我是不会说我是想写林克卡特树才来学这个东西的

    dp凸优化/带权二分

    这个东西其实挺有用的,

    dp凸优化是来解决这类问题的

    你有一些操作,操作(i)会对答案有贡献(w_i),选的操作越多,(w_i)越小/大

    问恰好进行(k)次操作所得到的最大/小答案

    普通解法

    额外记一维(k)表示进行了(k)次操作

    复杂度(O(nk))

    (dp)凸优化

    先考虑去掉(k)这个限制

    假设我们要求最大贡献,

    我们给每个物品一个附加权值(C)

    显然(C)越大时

    我们选的物品个数越多

    于是我们就可以二分这个(C),来让物品个数刚好等于这个(k)

    具体的,

    当物品个数(>C)时,我们调小(C)

    否则调大(C)

    最后的答案减去(C*k)即可.

    为什么叫凸优化呢?

    因为这个优化要满足,以k为横坐标,(f[n][k])为纵坐标,图像形成一个上凸包

    我们调整(C)的过程就是以一条斜率为(C)的斜线去切这个凸包,以得到(x=k)这个点的最大值,

    所以我们要求的截距当然要减去(Cx)

    当然可能出现凸包上两点斜率等于切线斜率的时候

    但这并没有关系

    以下是(wqs)的论文(?)

    如果发现(C)(x)时,所有最优解中最小的分段数大于(K),而取(x+1)时最小的分段数小于(K),那么(C)(x+1)时也存在分段数为(K)的最优解,只需取此时的最优答案减((x+1)K)

    也就是我们选择大的那个更新答案并没有问题,因为斜率是一样的

  • 相关阅读:
    案例------存储过程
    案例------冒泡排序
    案例------递归调用
    天气预报接口api(中国天气网)
    【转】ubuntu64,ndk-r9 编译 ffmpeg 2.1.1的config文件
    android权限大全
    JNI 回调小记
    java设置环境变量小工具
    bootstrap之双日历时间段选择控件—daterangepicker(汉化版)
    一个 bootstrap 弹出框插件
  • 原文地址:https://www.cnblogs.com/LLCSBlog/p/11629848.html
Copyright © 2011-2022 走看看