求助如何实现带有较大重复域的多个不可重整数集合(好像是?)合并
  • 板块学术版
  • 楼主2020kanade
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/8/17 13:24
  • 上次更新2023/10/27 14:59:37
查看原帖
求助如何实现带有较大重复域的多个不可重整数集合(好像是?)合并
456724
2020kanade楼主2022/8/17 13:24

背景题目:维护 nn 个不可重整数集合,每个正整数出现的次数为 0011 。要求支持插入/删除某个数(将某个数的值设为 1100),在某个集合中查询第 kk 小,以及把一个集合复制后合并入另一个集合(保留并入的集合)。n2×105n \le 2 \times 10^5 ,值域与 nn 同阶。

线段树合并显然不行,因为有较大重复域,复杂度会被卡成比暴力还劣。

请问:

1.一种或许可能的做法是拿 88 个ULL压一个 512512 位的bitset,用循环展开等奇技淫巧把操作复杂度卡到近似常数时间,之后拿这东西造一个块状链表,合并的时候直接或过去,复杂度好像是 Θ(n2w),w=29\Theta ( \frac {n^2} {w} ) ,w=2^9

2.是否有 polylog\text{poly} \log 写法(允许离线算法)。如果没有,是否有其他解法。

2022/8/17 13:24
加载中...