• 九省联考 2018 IIIDX


    题意

    给定一棵树,保证相同深度的点连续,你需要给每个点在 $v_i$ 中选取一个作为该点权值,且父亲的权值小于该点。

    你需要最大化序列的字典序。

    $1leq nleq 5 imes 10^5$ 。

    题解

    本题解从二分图匹配的角度解决了该问题,并说明了贪心的正确性(

    根据题目可以想到一个比较 $ ext{trival}$ 的贪心,每次先将最右子树遍历以保证最左儿子的权值最大。

    然后你就获得了 $60$ 分的成绩,打开一看仅过掉了 $v_i$ 互不相同的情况。

    考虑这个算法的正确性,我们仅保证了最优化最左儿子的代价,但是 $=$ 的性质可以对于右儿子进行调整,但是贪心无法做到。

    而对于 $v_i$ 互不相同的情况,由于不会出现 $=$ ,那么显然是正确的。

    那么我们只能枚举当前位置判断是否后面存在解,一直最优化此过程得到的一定是字典序最大的。

    现在的问题变成了:如何判断是否存在一种方案给未给定点定权值满足题意?

    稍微转化题意:我们当前可以得到一些限制:必须选择 $a_i$ 个 $geq b_i$ 的,需要满足所有的限制。为了方便将其限制写成 $(a_i,b_i)$

    这是一个简单的贪心,按照 $a_i$ 排序从小到大依次从左面开始选择。但是并没有显式的得到更优秀的判断条件。

    考虑建二分图,左侧代表未匹配结点 $sum a_i$ 个,右侧代表还未选择的 $v$ 。

    那么对于限制 $(a_i,b_i)$ ,只需要将左侧 $a_i$ 个连向 $b_i$ 的后缀。判断条件为是否该图存在完美匹配。

    考虑 $ ext{Hall}$ 定理,我们将所有限制按 $b_i$ 排序,可以发现只要判断后缀,即对于 $forall i,S=[i,i+1,...]$ ,$|S|leq |N(S)|$ 。

    即 $forall i,sum_{j=i} a_j leq W_{b_i}$ ,$W_{b_i}$ 表示 $b_i$ 后面未匹配点的个数 。

    移项可得 $W_{b_i}-sum_{j=i} a_jgeq 0$ ,那么我们仅需要判断是否对于每个后缀剩余的位置都需要 $geq 0$ 。

    那么我们只需要维护每个位置的 $W-sum_{在他位置之后的} a$ 是否均 $geq 0$ ,由于 $ ext{Hall}$ 定理,这个条件是充要的。

    故每次到一个需要判断的点撤销之前父亲的操作在新加入一个操作,判断序列的最小值是否 $geq 0$ 。

    整个过程仅需要一个数据结构支持查询最小值,区间加,线段树维护即可。

    判断是否加入可以线段树二分,故整体的时间复杂度为 $mathcal O(nlog n)$ 。

    https://loj.ac/s/1083508

  • 相关阅读:
    七款HTML在线编辑器[下载]
    三层开发框架
    vs2005快捷键
    Javascript的IE和Firefox兼容性汇编
    序列化
    [Web2.0]web2.0中的tag及其技术实现
    结合FlyTreeView 无限级别的分类
    sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
    FlyTreeView4.3.2.82 破解方法 (NineRays.Web.UI.WebControls.FlyTreeView)
    asp.net 获取cpu序列号 硬盘ID 网卡硬地址
  • 原文地址:https://www.cnblogs.com/si-rui-yang/p/14495432.html
Copyright © 2020-2023  润新知