zoukankan      html  css  js  c++  java
  • 模拟测试55

    T1:

      区间很大,但是最优位置可能出现的地方不超过$2n$个。

      可以将区间端点及最优值可能出现的位置离散化,即每个区间的$l$、$r$和$r+1$,连同$1$一起离散化。

      然后线段树维护就即可。

      要同时维护最左侧的$0$和$1$,当前区间是否全为$1$或全为$0$。

      修改时如果是区间赋值,直接覆盖答案及懒标记。

      如果是区间反转,交换最左侧的$0$和$1$的位置,同时反转区间状况和懒标记。

      查询最左侧的$0$即可。

      时间复杂度$O(nlogn)$。

    T2:

      将物品分成4类:甲喜欢,乙喜欢,都喜欢和都不喜欢。

      将每种情况排序,然后枚举都喜欢的选了多少个。

      那么甲乙分别喜欢的都要选上最小的几个,是的每个人喜欢的总数等于k。

      然后将剩下所有的东西装进线段树里,查询前几小值之和。

      线段树要动态增删维持复杂度。

      时间复杂度$O(nlogn)$。

    T3:

      对每个点进行如下操作:
        倒序枚举每一条边没,初始时集合中只有自己。

        如果两点都在集合中,当前点一定被吃掉,结束返回;

        如果其中一个点在集合中,扩大集合;

        如果两个点都不在集合中,什么影响也没有,继续递归。

        递归到最后,则该点可以存活。

      这是的集合代表当前点存活的情况下需要替它被吃的点。

      枚举两个点,如果两个点的集合有交集,则不能同时存活,反之能。

      时间复杂度$O(nm)$。

  • 相关阅读:
    python 模块基础介绍
    python 函数基础介绍
    性能测试总结与分享材料
    徒手撸一个简单的RPC框架
    【springcloud】一文带你搞懂API网关
    一次非常有意思的sql优化经历
    MySQL数据库之互联网常用分库分表方案
    后端开发应该掌握的Redis基础
    权限管理模块设计
    基于redis的分布式锁的分析与实践
  • 原文地址:https://www.cnblogs.com/hz-Rockstar/p/11619517.html
Copyright © 2011-2022 走看看