首页 > 其他分享 >带修区间mex

带修区间mex

时间:2023-11-25 23:23:39浏览次数:27  
标签:删除 复杂度 sqrt 扫描线 权值 区间 操作 mex 带修

1 x y 把x改成y.
2 x y 询问区间[x,y]的mex.

part0 polylog做法

考虑整体二分,那就转换成了.

保留权值[vl,vr)的数,带修区间数颜色数(是否全部出现过 <=> 颜色数=vr-vl).

这个问题可以直接cdq.

复杂度O(n log^3 n).

part1

考虑分块不难做到.

O(1)单点修改(只往小了改).

O(sqrt n)寻找第一个小于k的位置.

具体来说直接分成根号块然后维护块内最小.

查询的时候用块内结果优化暴力跳即可.

part2

我们回顾一下这个问题不带修时经典的扫描线做法.

扫描线的时候维护一颗权值线段树,每个节点上记录权值v出现的位置中最靠右的,若不存在为-inf.

然后把询问挂在右端点上,从左向右扫描线,扫到的时候答案即为第一个<l的位置,线段树二分即可.

part3

考虑对操作分块,每sqrt n个操作分一块.

先把操作块内的修改作为添加操作加入.(修改应该是删除+添加,这里先不做删除处理).

构建出一个part1中所述的结构.显然可以线性.总体构建 O(sqrt n)次,这部分复杂度O(n sqrt n).

然后扫描线,询问挂在右端点上,从右向左扫描线.这里的操作只有删除,单次O(1).

扫到的时候,记录一个操作栈,然后把这个询问对应时间的删除全部加入.

接下来查询,单次复杂度O(sqrt n),查询O(n)次,复杂度O(n sqrt n).然后再用操作栈撤销删除,继续扫即可.

因为操作分块,单次询问加入的删除操作不超过O(sqrt n)次,复杂度O(n sqrt n).

总体复杂度O(n sqrt n).

标签:删除,复杂度,sqrt,扫描线,权值,区间,操作,mex,带修
From: https://www.cnblogs.com/QedDust/p/17856330.html

相关文章

  • 区间DP
    区间DP区间DP题目描述设有\(N\)堆石子排成一排,其编号为\(1,2,3,…,N\)。每堆石子有一定的质量,可以用一个整数来描述,现在要将这\(N\)堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺......
  • 2维区间树状数组
    voidadd(llx,lly,llz){for(intX=x;X<=n;X+=X&-X)for(intY=y;Y<=m;Y+=Y&-Y){t1[X][Y]+=z;t2[X][Y]+=z*x;t3[X][Y]+=z*y;t4[X][Y]+=z*x......
  • 区间dp
    1.acwing282石子合并问题1#include<bits/stdc++.h>2usingnamespacestd;34intn;5constintN=310;6ints[N];7intf[N][N];89intmain()10{11scanf("%d",&n);12for(inti=1;i<=n;i++)scanf(&qu......
  • 关于区间连续段问题 (析合树)
    有部分题目需要处理关于区间连续段的问题(一般来说,对于一个排列,如果一个区间的值连读,就为一个连续段。)区间连续段看似不太好维护,其实有一种处理它的利器:析合树。(也可能只是析合树的思想),就能方便的维护这一个东西。析合树其实这个名字不重要......
  • 区间树上查找所有与给定区间相交的区间-算法复杂度正确性证明
    区间树是在平衡树上维护的数据结构,按照左端点大小排序。详见《算法导论》。算法设计思路红黑树的拓展在红黑树上维护结点属性\(min,max\):\(min\)表示该结点及其所有后代结点中的区间低端的最小值。\(max\)表示该结点及其所有后代结点中的区间高端的最大值。在插入时,对结点......
  • 1-1875D - Jellyfish and Mex
    题意:有一个长度为\(n\)的数组,每次删除一个数直到删完,求每次删除后数组的mex的和的最小值。(\(\sumn\leq5000,a_i\leq10^9\))思路:排序后,只有从0开始连续的数在会有贡献,对于连续的数,如果要消去他的对答案的贡献,只有全部去掉才行,考虑n的范围小于5000,n^2做法被允许。//因为排......
  • 蓝桥杯管道 -- 二分, 区间覆盖
    蓝桥杯管道--二分,区间覆盖原题链接参照执梗大佬的代码,我太菜了wuwuwu......importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;/***ClassName:Main12*Package:*Description:**@author:LH寒酥......
  • P8317 [FOI2021] 幸运区间
    P8317[FOI2021]幸运区间题目传送门 分治+dfs 首先可以发现\(k\)和\(d\)很小,所以是可以搜索的。 那么就考虑如何枚举区间,显然\(n^2\)枚举是会超时的,所以就考虑分治来求。 求的过程中就分成三种情况来处理:在左边一半,在右边一半,以及跨越中间点。显而易见的是,跨越......
  • AND-MEX Walk
    这个题解不错。首先,10万组询问,10万的点和边,能且仅能用并查集判断图的连通性。看到&就要想到非严格单调递减,看到|就要想到非严格单调递增。不难发现样例中答案只有0,1,2,仔细想想,就会发现不可能存在210的序列,因为一旦有了2,末尾就一定是0,和任何数&都不可能是1。换......
  • [链表] 2-链表内指定区间反转
    ----------......