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 翻译