CF2182F2 Christmas Reindeer (hard version)

题目描述

这是本题的高难度版本。两个版本的唯一区别是 $n$ 和 $m$ 的上限。在本版本中,$n \le 3 \cdot 10^5$ 且 $m \le 3 \cdot 10^5$。 你有一群 $n$ 头圣诞驯鹿。第 $i$ 头驯鹿的力量为 $2^{c_i}$。 一组 $k$ 头圣诞驯鹿的最大负载能力按照如下方式计算: - 首先将这些驯鹿的力量按不递增顺序排序。用 $c'_1, c'_2, \dots, c'_k$ 表示排序后的力量,其中 $c'_i \ge c'_{i+1}$; - 然后,这组驯鹿的最大负载能力等于 $c'_1 + \left\lfloor\frac{c'_2}{2}\right\rfloor + \left\lfloor\frac{c'_3}{4}\right\rfloor + \dots + \left\lfloor\frac{c'_k}{2^{k-1}}\right\rfloor$。 注意,有些驯鹿对组的最大负载能力的贡献可能为零。 你需要处理三种类型的操作: 1. 向队伍中增加一头力量为 $2^x$ 的驯鹿; 2. 从队伍中移除一头力量为 $2^x$ 的驯鹿; 3. 计算从队伍中任选若干头驯鹿(可能全部选上),使得所选组的最大负载能力不少于 $x$ 的选法数。 如果队伍中有多头驯鹿拥有相同的力量,它们被视为不同的个体。例如,若你有两头力量为 $1$ 的驯鹿,需要计算最大负载能力不少于 $1$ 的选法数,则有 $3$ 种选法:选第一头,选第二头,或者两头都选。

输入格式

第一行包含两个整数 $n$ 和 $m$,表示初始驯鹿数量和操作数,$1 \le n, m \le 3 \cdot 10^5$。 第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$,$0 \le c_i \le 60$,表示第 $i$ 头驯鹿的力量为 $2^{c_i}$。 接下来 $m$ 行,每行描述一个操作之一,格式如下: - $1\ x$($0 \le x \le 60$):向队伍中增加一头力量为 $2^x$ 的驯鹿; - $2\ x$($0 \le x \le 60$):从队伍中移除一头力量为 $2^x$ 的驯鹿; - $3\ x$($1 \le x \le 10^{18}$):计算从队伍中任选若干头驯鹿(组,可以全部选上),使得所选组的最大负载能力不少于 $x$ 的选法数。 额外的输入约束:每当出现类型 2 的操作时,当前队伍里至少包含一头力量为 $2^x$ 的驯鹿。

输出格式

每当遇到类型 3 的操作时,输出一个整数,表示满足条件的组数(组可全部选上)。由于答案可能很大,输出其对 $998244353$ 取模后的结果。

说明/提示

以第一个样例说明。初始有三头驯鹿,力量分别为 $4$、$2$ 和 $2$。 - 第一次操作,需要计算最大负载能力不少于 $5$ 的组数,共有三种组:$\{1, 2\}$(第 $1$ 和 $2$ 头),$\{1, 2, 3\}$ 以及 $\{1, 3\}$; - 第二次操作,需要计算最大负载能力不少于 $6$ 的组数。即使全部选上,最大负载能力 $4 + \left\lfloor\frac{2}{2}\right\rfloor + \left\lfloor\frac{2}{4}\right\rfloor = 5$,没有合法组; - 第三次操作,增加一头力量为 $4$ 的驯鹿,记为第 $4$ 头; - 第四次操作,能够满足条件的组为:$\{1, 4\}$,$\{1, 2, 4\}$,$\{1, 3, 4\}$,$\{1, 2, 3, 4\}$; - 第五次操作,此时有 $10$ 种方案; - 第六次操作,移除了一头力量为 $2$ 的驯鹿。假设是第 $2$ 头,现在还剩 $1, 3, 4$ 三头; - 第七次操作,需要计算最大负载能力不少于 $5$ 的组,有四种:$\{1, 3\}$、$\{1, 4\}$、$\{1, 3, 4\}$、$\{3, 4\}$。 由 ChatGPT 5 翻译