• 省选模拟70


    A. 小 Y 增员操直播群

      如果我们将区间合并的过程看做一棵树,那么答案就是树的深度。

      考虑检验一个区间是否可能是树上的一个节点,那么只要判断这个区间能否分成两个区间即可。

      考虑找到较小的区间的长度。在区间的左端点处查询区间内的最靠右的两个配对的点,那么这两个点的差就是区间长度。

      特判一下两个区间长度一样即可。

    B. 小 J 真爱粉交流群

      首先 可以发现,第二个人的作用是决定第一个人从哪一个位置下去,所以墙的位置必然是一段连续区间。

      考虑dp。令$f[i][l][r]$表示当前在$[l+1,r]$有墙,当前棋子在$l$的最优解。同理令$g[i][l][r]$表示当前$[l,r-1]$有墙,棋子在$r$的最优解。

      那么考虑转移,当前是第二个人做决定,所以他可以决定当前要不要在下面放墙。假如放,那么另外一个人会选择走到两边没有墙的位置。

      然后直接转移就行了。

    C. 青青草原播种计划

      对于任意子集的mex,有一个结论是,假设mex为$x$,$x$为第一个满足所有小于等于$x$的数加和为$x-1$的数。

      有了这个结论就很好做了,前面几个操作可以用显然的可持久化线段树来维护,合并的操作只要线段树合并就行。

      然后对于查询,找到历史版本对应的线段树的根节点,然后暴力跳,显然跳的次数不会超过log次。

      复杂度$O(nlog^2n)$

  • 相关阅读:
    【docker】命令学习
    docker 安装mysql
    Docker DockerFile案例 自定义的tomcat9
    尚硅谷 Docker DockerFile案例 ONBUILD命令案例
    dockerfile 案例2 CMD ENTRYPOINT命令案例
    Dockerfile案例
    Dockerfile解析
    数据卷容器
    Dockfile添加数据卷
    容器数据卷
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12701424.html
Copyright © 2020-2023  润新知