• WQS二分


    颓废的学的感觉已经懂了。

    忘情水二分(忘情水->斗罗大陆里是离魂果/cy) 也叫带权二分。

    主要用来求出 在...之中选出恰好k个...求最小/大代价

    这种情况我们可以用wqs二分来优化dp什么的。

    上一道例题来分析带权二分吧.

    [国家集训队2 Tree I](https://www.luogu.com.cn/problem/P2619)

    一张无向图有黑边和白边 求出一棵含恰好k条白边的最小生成树。

    怎么做?我们先求出任意一棵最小生成树之后再调整是很困难的。

    dp?但是这样就只能状压了 因为我们需要知道树的状态什么的 复杂度过高。

    这个时候就需要wqs二分了 这刚好是带权二分的模型 恰好k条白边.

    先放上一篇讲wqs二分很不错的blog:[Creeper_LKF大佬](https://www.cnblogs.com/CreeperLKF/p/9045491.html)

    下面我就可以开始瞎bb了/cy 首先设g[x]表示选出恰好x条白边的最小生成树的的权值 我们把画一个x-g[x]图像。

    显然是一个凸包 我们问题的答案就是 横坐标x=k 时y=g[k]的这个y.

    但是我们只知道形状却求不出来 考虑拿一条直线去切这个凸包 当然我们随便搞一个斜率去切就行。

    这和斜率优化的模型时一致的 我们想办法让这条直线切到最优值 类似于线性规划我们一定可以在凸包的某个点上找到最优解。

    什么叫最优解这里我给出的定义是 让截距最大的那个点即。那么此时因为斜率切到了点这条直线的解析式位y=kx+b(b此时是最大的b)

    反过来想 b=y-kx 即b=g[x]-kx 下面就是重头戏了.

    我们现在已知的是随便选择若干条边所能得到的最优解这个是我们可以求出来的设选择了w条边对应的最优解位v

    考虑一下上面的那个斜率 b=v-kw; 这个斜率代表了什么 每选择一条边就要-k

    也就是说此时存在一个斜率k使得其切点在w上并且此时是最优解.

    但注意此时显然k为0 因为我每选择一条边代价为原来的这条边的代价-0

    这意味着我们可以是求得最优解的 我们只需要让在求得最优解的同时使得切点横坐标刚好为x即可.

    二分这个k 求最优解 同时我们也可以的出当前最优解在x的左边还是右边 再进行二分即可。

    最后,我们发现二分的k可能是小数 而小数二分效率很低甚至二分不出来的样子(因为不可能完全二分出k...

    但是我们其实是可以不二分小数的直接二分整数 因为直线的斜率的k在一定范围内都是会切到同一个点上的。

    这样会到这 最后二分出了一个 mid 使得cx可能刚好二分不到x

    但是此时一定有黑白边边权相同的情况 我们排序优先白色排即可使mid的更合法化。

    于是当c>=x时我们可以构造出c==x的情况所以求出了答案.

  • 相关阅读:
    有效提高生产力的8个贴士
    如何提高团队编程水平
    PHPCMS V9使用中的一些心得体会
    2012全球SEO行业调查报告
    盘点SEO和SEM的优劣势
    DEDECMS 添加栏目图片
    2013年中国500强排行榜(公司名单及网址)
    十大淘宝搜索作弊行为
    利用curl抓取远程页面内容
    新浪,腾讯,淘宝,人人登陆
  • 原文地址:https://www.cnblogs.com/chdy/p/12266343.html
Copyright © 2020-2023  润新知