AT_arc228_c [ARC228C] Partially Sort
题目描述
给定一个排列 $P = (P_1, P_2, \dots, P_N)$,即 $(1,2,\dots,N)$ 的一个排列。
对于 $(1,2,\dots,N)$ 的一个子序列 $x = (x_1, x_2, \dots, x_k)$,定义 $f(x)$ 为如下操作后得到的序列:
- 初始化序列 $Q = (Q_1, Q_2, \dots, Q_N)$,令 $Q = P$。
- 记 $A = (A_1, A_2, \dots, A_k)$,为 $(Q_{x_1}, Q_{x_2}, \dots, Q_{x_k})$ 按升序排序后的序列。
- 对于 $1 \le i \le k$,用 $A_i$ 替换 $Q_{x_i}$。此时的 $Q$ 记为 $f(x)$。
对于所有 $2^N$ 种可能的 $x$(包括空序列),计算所有 $f(x)$ 的逆序对数之和,并对 $998244353$ 取模输出。
输入格式
输入按如下格式给出:
> $N$
> $P_1\ P_2\ \dots\ P_N$
输出格式
输出答案。
说明/提示
### 样例解释 1
对于 $N=3$,八种 $x$ 的 $f(x)$ 及逆序对数如下:
- $x=()$,$f(x) = (3,1,2)$,逆序对数为 $2$。
- $x=(1)$,$f(x) = (3,1,2)$,逆序对数为 $2$。
- $x=(2)$,$f(x) = (3,1,2)$,逆序对数为 $2$。
- $x=(3)$,$f(x) = (3,1,2)$,逆序对数为 $2$。
- $x=(1,2)$,$f(x) = (1,3,2)$,逆序对数为 $1$。
- $x=(1,3)$,$f(x) = (2,1,3)$,逆序对数为 $1$。
- $x=(2,3)$,$f(x) = (3,1,2)$,逆序对数为 $2$。
- $x=(1,2,3)$,$f(x) = (1,2,3)$,逆序对数为 $0$。
因此答案为 $2+2+2+2+1+1+2+0=12$。
### 约束条件
- $2 \le N \le 2 \times 10^5$
- $P$ 是 $(1,2,\dots,N)$ 的一个排列。
- 所有输入均为整数。
由 ChatGPT 5 翻译