AT_arc204_c [ARC204C] Maximize Sum of Mex

题目描述

给定一个正整数 $N$ 和一个排列 $P = (P_{1}, P_{2}, \dots, P_{N})$,$P$ 是 $1$ 到 $N$ 的一个排列。 有 $Q$ 个询问。每个询问给出非负整数 $A_{0}, A_{1}, A_{2}$,请输出下述问题的答案。保证 $A_{0} + A_{1} + A_{2} = N$。 > 长度为 $N$ 的序列 $B$ 被称为**好序列**,当且仅当它满足以下所有条件: > > - 恰好有 $A_{0}$ 个 $i$ 满足 $1 \leq i \leq N$,使得 $B_{i} = 0$。 > - 恰好有 $A_{1}$ 个 $i$ 满足 $1 \leq i \leq N$,使得 $B_{i} = 1$。 > - 恰好有 $A_{2}$ 个 $i$ 满足 $1 \leq i \leq N$,使得 $B_{i} = 2$。 > > 对于长度为 $N$ 的序列 $B$,其**得分**定义如下: > > - $ \displaystyle\sum_{i = 1}^{N}\mathrm{MEX}(B_{i}, B_{P_{i}}) $ > > 其中,$\mathrm{MEX}(x, y)$ 表示不等于 $x$ 也不等于 $y$ 的最小非负整数。 > > 请在所有**好序列**中,求得分的最大值。

输入格式

输入按如下格式从标准输入给出: > $N$ $P_{1}$ $P_{2}$ $\dots$ $P_{N}$ $Q$ $query_{1}$ $query_{2}$ $\cdots$ $query_{Q}$ 其中 $query_{i}$ 表示第 $i$ 个询问,格式如下: > $A_{0}$ $A_{1}$ $A_{2}$

输出格式

输出 $Q$ 行。第 $i$ 行输出第 $i$ 个询问的答案。

说明/提示

### 样例解释 1 对于第一个询问,$B = (0, 1, 2)$ 是一个好序列。该序列的得分为 $\mathrm{MEX}(0, 1) + \mathrm{MEX}(1, 2) + \mathrm{MEX}(2, 0) = 2 + 0 + 1 = 3$,即 $3$。不存在得分更高的好序列,因此第一行输出 $3$。 ### 数据范围 - $1\leq N\leq 3\times 10^{5}$ - $(P_{1}, P_{2}, \dots, P_{N})$ 是 $1$ 到 $N$ 的一个排列。 - $1\leq Q\leq 3\times 10^{5}$ - $0\leq A_{i}$ - 对每个询问,$A_{0} + A_{1} + A_{2} = N$。 - 所有输入值均为整数。 由 ChatGPT 4.1 翻译