AT_arc218_e [ARC218E] Reverse and Reverse
题目描述
对于一个 $N$ 元排列 $p = (p_1, p_2, \dots, p_N)$(即 $p$ 是 $1,2,\dots,N$ 的一个排列)和正整数 $M$,定义 $f(p, M)$ 为以下问题的答案:
> 对 $p$ 进行如下操作 $M$ 次:
>
> - 选择一个整数 $i$,满足 $1 \le i \le N-1$,将 $(p_1, p_2, \dots, p_i)$ 和 $(p_{i+1}, p_{i+2}, \dots, p_N)$ 分别反转。形式上,将 $p$ 替换为 $(p_i, p_{i-1}, \dots, p_1, p_N, p_{N-1}, \dots, p_{i+1})$。
>
> 共存在 $(N-1)^M$ 种操作序列。求所有这些操作序列最终得到的排列的逆序对数量总和,结果对 $998244353$ 取模。
给定一个 $N$ 元排列 $P = (P_1, P_2, \dots, P_N)$。之后需要处理 $Q$ 个询问:
- 每次给定一个整数 $x$ $(1 \le x \le N-1)$ 和正整数 $K$,将 $P_x$ 与 $P_{x+1}$ 交换,然后计算 $f(P, K)$。
输入格式
输入由标准输入给出,格式如下:
> $N\ Q$
> $P_1\ P_2\ \dots\ P_N$
> $\mathrm{query}_1$
> $\mathrm{query}_2$
> $\vdots$
> $\mathrm{query}_Q$
每个询问格式如下:
> $x\ K$
输出格式
输出 $Q$ 行,第 $i$ 行输出第 $i$ 个询问的答案。
说明/提示
### 样例解释 1
对于第一个询问,交换 $P_1$ 和 $P_2$,得到 $P=(3,1,2)$。存在两种操作序列:
- 选 $i=1$,$P$ 变为 $(3,2,1)$,逆序对数为 $3$。
- 选 $i=2$,$P$ 变为 $(1,3,2)$,逆序对数为 $1$。
答案为 $3+1=4$。
对于第二个询问,交换 $P_2$ 和 $P_3$,得到 $P=(3,2,1)$。两种方案:
- 选 $i=1$,$P=(3,1,2)$,逆序对数为 $2$。
- 选 $i=2$,$P=(2,3,1)$,逆序对数为 $2$。
答案为 $2+2=4$。
### 数据范围
- $2 \le N \le 2 \times 10^5$
- $1 \le Q \le 2 \times 10^5$
- $P$ 是 $1,2,\dots,N$ 的一个排列。
- $1 \le x \le N-1$
- $1 \le K \le 10^9$
- 输入均为整数。
由 ChatGPT 5 翻译