zoukankan      html  css  js  c++  java
  • 省选模拟24 题解

    A. U.N.OWEN就是她吗?

    字典序最大,只需要贪心。

    考虑用网络流来做这个题。

    每次二分一个答案,然后对当前操作和之前进行的操作与每个元素直接建边,判断是否存在完美匹配。

    因为题中保证了一个特殊性质,考虑通过霍尔定理优化。

    点集 $X,Y$ 存在完美匹配,仅当 $forall Z in X,|match(Z)|>=|Z|$ 。

    于是问题转化为,加入当前这个点,考虑包含当前点的子集是否成立。

    如何利用题中不相交的性质?

    结论是,只需要考虑包含当前点的区间。

    证明其实很简单:

    考虑三个点按左端点排序分别为为 $i,j,k$ ,其中当前加入的点为 $i$ 。

    只需要证明不存在情况,使得 $|match(i) cup match(k)|<|i|+|k|$ ,但 $|match(i) cup match(j) cup match(k)|>=|i|+|j|+|k|$ 

    因为$i,j,k$的左端点是单调的,显然右端点也是单调的。

    那么可以分两种情况考虑,若 $match(i) cap match(j) e varnothing$ ,那么加上 $j$ ,只会使不等关系的右侧变大,所以原式成立。

    若 $match(i) cap match(j) = varnothing$ ,那么可以直接删去$k$,因为 $|match(k)|>=|k|$ 是原来考虑过的内容。

    所以只需要考虑区间的结论是正确的。

    考虑一个暴力做法,分别统计当前节点左侧、右侧的最劣情况,最终合并,这个复杂度是 $O(m^2)$。

    发现可以通过前缀和维护,问题转化为区间最小值最大值,区间修改,线段树可以解决。

    B. 哈德曼的妖怪少女

    鸽了。

    C. 平安时代的外星人

    考虑首先跑出来由 $(0,0)$ 到每个关键点的左上角的点的最短路树。

    路径是不跨过最短路树的。

    因为一次跨过去,对应一次跨回来,这段路程显然是大于最短路径的。

    然后可以发现问题是一个网格图的最小环。

    把每个点拆为四个点,分别表示当前在这个点的左上、右上、右下、左下来尝试套圈。

    对于最短路树上的边,不建立连边关系。

    通过最短路确定最小环即可。

  • 相关阅读:
    php中的一些需要注意点
    提权以及反弹shell一些方法
    SVN源码泄露漏洞
    网易白帽子视频的一些笔记
    sql注入的一些笔记
    URL中的"#"、"?"、"&"号的作用
    Asp.net mvc基础(十五)EF原理及SQL监控
    Asp.net mvc基础(十四)Entity Framework
    Asp.net mvc基础(十三)集合常用的扩展方法和Linq语句
    Linux运维基础(二)网络常见问题
  • 原文地址:https://www.cnblogs.com/skyh/p/12309677.html
Copyright © 2011-2022 走看看