模拟测试55

Posted hz-rockstar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟测试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)$。

以上是关于模拟测试55的主要内容,如果未能解决你的问题,请参考以下文章

2019.9.29 csp-s模拟测试55 反思总结

如何在单个测试的基础上更改模拟实现 [Jestjs]

CountDownLatch模拟高并发测试代码

使用 Jest、AudioContext 进行测试和模拟

如何模拟用于测试颤动屏幕小部件的导航参数?

Clojure 测试中的数据库模拟