atcoder#AGC030D. [AGC030D] Inversion Sum

[AGC030D] Inversion Sum

得分 : 10001000

问题陈述

给定一个长度为 NN 的整数序列:A1,A2,...,ANA_1,A_2,...,A_N。让我们依次执行 QQ 次操作。
ii 次操作由两个整数 XiX_iYiY_i 描述。在该操作中,我们将选择以下两个操作中的一个并执行:

  • 交换 AXiA_{X_i}AYiA_{Y_i} 的值
  • 什么也不做

共有 2Q2^Q 种执行这些操作的方法。找出所有这些执行操作的方法的最终序列的逆序数之和,结果对 109+710^9+7 取模。

这里,序列 P1,P2,...,PMP_1,P_2,...,P_M 的逆序数是满足 1i<jM1\leq i < j\leq MPi>PjP_i > P_j 的整数对 (i,j)(i,j) 的数量。

约束条件

  • 1N30001 \leq N \leq 3000
  • 0Q30000 \leq Q \leq 3000
  • 0Ai109(1iN)0 \leq A_i \leq 10^9(1\leq i\leq N)
  • 1Xi,YiN(1iQ)1 \leq X_i,Y_i \leq N(1\leq i\leq Q)
  • XiYi(1iQ)X_i\neq Y_i(1\leq i\leq Q)
  • 所有输入值均为整数。

输入

输入从标准输入以以下格式给出:

NN QQ

A1A_1

::

ANA_N

X1X_1 Y1Y_1

::

XQX_Q YQY_Q

输出

打印最终序列的逆序数之和,结果对 109+710^9+7 取模。

3 2
1
2
3
1 2
1 3
6

有四种执行操作的方法,如下所示:

  • 什么也不做,第一和第二次操作均如此。最终序列为 1,2,31,2,3,逆序数为 00
  • 第一次操作不做,第二次进行交换。最终序列为 3,2,13,2,1,逆序数为 33
  • 第一次操作进行交换,第二次不做。最终序列为 2,1,32,1,3,逆序数为 11
  • 两次操作均进行交换。最终序列为 3,1,23,1,2,逆序数为 22

这些逆序数的和为 0+3+1+2=60+3+1+2=6,应打印该结果。

5 3
3
2
3
1
4
1 5
2 3
4 2
36
9 5
3
1
4
1
5
9
2
6
5
3 5
8 9
7 9
3 2
3 8
425