P5509光剑 | ||
|
问题描述

一只猴子正在将一个长度为 \(n\) 的正整数序列 \(a_1,a_2,\cdots,a_n\) 进行排序。
猴子并不知道该如何排序,它会交换两个数,但甚至不知道交换再交换就相当于不交换。猴子只是胡乱的进行了 \(m\) 次操作,第 \(i\) 次选择序列中的两个数 \(a_x\) 和 \(a_y\) ,将这两个数交换很多次。你可以认为,第 \(i\) 次操作之后 \(a_x,a_y\) 可能被交换,也可能没有发生变化。
nodgd决定用 \(m\) 次操作后逆序对的数量来衡量猴子排序后的效果,根据猴子每次操作是否交换可以得到 $2^m$ 个最终序列,请你计算所有最终序列的逆序对数量的总和 \(\bmod 10^9+7\) 。
输入格式
第一行两个整数 \(n,m\) ,表示序列长度和猴子的操作次数。
第二行 \(n\) 个整数,表述初始序列。
接下来 \(m\) 行,每行两个整数 \(x,y\) ,表示猴子的一次操作。
输出格式
输出一行一个整数答案。
样例输入 1
3 1
1 3 2
1 2
样例输出 1
3
样例输入 2
10 5
7 6 8 3 2 10 1 4 9 5
6 10
5 1
1 3
4 7
4 8
样例输出 2
680
样例输入 3
10 5
7 6 6 3 7 10 2 6 6 3
6 10
5 1
1 3
4 7
4 8
样例输出 3
676
提示

样例1解释
- 如果不交换则序列仍为 \([1,3,2]\) ,逆序对数量为 $1$ ;
- 如果交换则序列变成 \([3,1,2]\) ,逆序对数量为 $2$ ;
数据范围
对于所有测试数据, $1\leq n\leq 3000$ , $0\leq m\leq 3000$ , $1\leq a_i\leq n$ , $1\leq x,y\leq n$ , \(x\neq y\) 。
每个子任务不捆绑,分值均匀分布在每个测试点上。
子任务 | 分值 | \(n\leq\) | \(m\leq\) | 其他限制 |
---|---|---|---|---|
$1$ | $10$ | $3000$ | $0$ | 无 |
$2$ | $10$ | $10$ | $10$ | 无 |
$3$ | $10$ | $3000$ | $12$ | 无 |
$4$ | $20$ | $500$ | $500$ | 无 |
$5$ | $20$ | $3000$ | $3000$ | 序列无重复数字 |
$6$ | $30$ | $3000$ | $3000$ | 无 |