zoukankan      html  css  js  c++  java
  • 学习笔记--APIO 2018 二分专题 By wuvin

    前言:

    在APIO 2018 Day2下午听wuvin讲二分,听了一上午的神仙,现在终于有可以听懂了。

    专题:

    1. 平均边权最大

      • 题目链接:https://www.questoj.cn/problem/34

      • 题解 by wuvin:

        二分平均值

        然后每条边减去平均值
        变为查找是否存在正环

        可以使用SPFA(反着写松弛)

    2. 最大闭合权子图变式

      • 题意:

        一个N个点M条边的图(不一定连通)。

        一个子图的优美程度定义为子图中的边数/子图的点数

        现在你需要求出最大能得到的优美程度是多少?

      • 题解by wuvin:

        照套路我们二分一下

        然后点带负权,边带正权

        选择边必须选择点

        变成最大权闭合子图,上网络流解决

      然而我并不会网络流求这个...

    3. 带权二分系列

      1. BZOJ 2654

        • 题目链接:
          https://www.lydsy.com/JudgeOnline/problem.php?id=2654

        • 题解by wuvin:

          如果我们对所有白色边的边权增加(M*maxW),那么最小生成树会得到一个白色边尽量少的方案。

          如果我们对所有白色边的边权增加(-M*maxW),那么最小生成树会得到一个白色边尽量多的方案。

          我们定义这个给白色边的额外权值为C。随着C从小到大遍历([-M imes maxW,M imes maxW]),那么我们的最优方案中的白色边会逐渐减少。

          如果某个C下,我们最优方案刚好得到K条边,那么这就是原题的最优解。因为最终代价为 原题的最优解+(C*K) 其中K和C都是常数,所以说最优解和原题是同一个最优解。

          所以我们可以二分C值,然后使用(kruskal)生成树即可。(假设白色边和黑色代价一样的时候选择白色边)

          但是注意一个细节,随着C的增加,白色边边数只是单调不增而已,可能出现C=1是得到5条白色边,C=1+eps是就是3条白色边,这是因为可能存在可以代替白色边的权值刚好之比白色边大1的黑色边。

          所以二分到最后需要特判一下。

      2. APIO 2014

        • 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3675

        • 题解by wuvin:

          Ans = C – 每一段内任意两个数的两两的乘积之和

          (Ans=C-minimize(sum_{i in [li,ri]}sum_{j in [li,ri]} {Wi imes Wj}))

          传统做法O(NK)的斜率DP

          我们来参数二分 —— 给每次划分附上一个额外的代价C。

          (C= +∞)时,答案是只分一段。
          (C=0)时,答案是每个数割一刀,分成n段。

          分的段数随着C的增长而减少
          于是可以采用刚刚类似的二分方法。

          二分之后就是正常的斜率DP了。
          最终复杂度 (O(nlogV))

        • 相似:

          SDOI2016 征途

  • 相关阅读:
    Java设计模式之工厂模式的两种实现方式
    1.揭开消息中间件RabbitMQ的神秘面纱
    再谈spring的循环依赖是怎么造成的?
    深入理解java反射原理
    关于springmvc的helloworld的压测报告
    线程池工厂Executors编程的艺术
    lazy-init 懒加载的艺术
    spring中的mybatis的sqlSession是如何做到线程隔离的?
    java并发机制锁的类型和实现
    ReentrantReadWriteLock 读写锁解析
  • 原文地址:https://www.cnblogs.com/Rye-Catcher/p/9026803.html
Copyright © 2011-2022 走看看