TouchStone
  请登录后使用
登录 注册
 系统首页  练习题库  考试列表  判题结果  信息发布  解题排行
  • 首页
  • 题库
  • P5509
  • 题目
  • P5509光剑
    限制 : 时间限制 : - MS   空间限制 : - KB
    评测说明 : 1s,512m
    问题描述

    一只猴子正在将一个长度为 \(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$