「AGC030D」Inversion Sum

传送门

妙啊。

由于逆序对的个数最多只有 \(O(n^2)\) 对,而对于每一个询问与其相关的逆序对数也最多只有 \(O(n)\) 对,我们可以对于每一对数分别考虑其贡献。

然后你发现直接算所有情况的和非常麻烦,所以我们可以先算出所有情况的期望逆序对数,即每一对为逆序对的概率之和,然后乘上 \(2^q\)。

那这就非常 easy 了。

就每次对于有关联的两对取一个平均值就完事了。

/*---Author:HenryHuang---*/
/*---Never Settle---*/
#include<bits/stdc++.h>
using namespace std;
const int p=1e9+7;
const int inv2=(p+1)/2;
const int maxn=3e3+5;
int a[maxn];
int f[maxn][maxn];
int ksm(int a,int b,int p){
int ans=1;
while(b){
if(b&1) ans=1ll*ans*a%p;
b>>=1,a=1ll*a*a%p;
}
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n,q;cin>>n>>q;
for(int i=1;i<=n;++i) cin>>a[i];
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
f[i][j]=a[i]>a[j];
for(int _=1;_<=q;++_){
int x,y;
cin>>x>>y;f[x][y]=f[y][x]=1ll*inv2*(f[x][y]+f[y][x])%p;
for(int i=1;i<=n;++i){
if(i==x||i==y) continue;
f[x][i]=f[y][i]=1ll*inv2*(f[x][i]+f[y][i])%p;
f[i][y]=f[i][x]=1ll*inv2*(f[i][y]+f[i][x])%p;
}
}
int ans=0;
for(int i=1;i<=n;++i)
for(int j=i+1;j<=n;++j)
ans=(ans+f[i][j])%p;
cout<<1ll*ans*ksm(2,q,p)%p<<'\n';
return 0;
}

最新文章

  1. ASP.NET关于对excel数据导入到数据库
  2. Flex Builder快捷键
  3. Sql获取周、月、年的首尾时间。
  4. nginx 页面乱码问题
  5. bzoj 2595 斯坦纳树
  6. jQuery实现用户注册的表单验证
  7. 最短路+线段交 POJ 1556 好题
  8. MAC地址查询 Linux/Unix操作系统mac地址怎么查
  9. 573 The Snail(蜗牛)
  10. Goodle Clean设计架构
  11. adapter中报错:Can&#39;t create handler inside thread that has not called Looper.prepare()
  12. java基础回顾(五)线程详解以及synchronized关键字
  13. bootstrap fileinput上传返回400,404,500 等错误替换
  14. Java 常量池存放的是什么
  15. nativescript——轮播图组件
  16. ScriptEngine执行复杂js报数组越界
  17. [Codeforces 925C]Big Secret
  18. Freemarker-2.3.22 Demo - No04_条件判断
  19. singer页面点击歌手singer是跳转到singer-detail的设置
  20. Odoo中的约束

热门文章

  1. 使用vue-cli 来创建vue项目
  2. 华为计算平台MDC810发布量产
  3. CUDA C编程接口技术分析
  4. 重新整理 .net core 实践篇—————日志系统之服务与日志之间[十六]
  5. MySQL 5.7.33 超级详细下载安装配置测试教程(可以安装成功版)
  6. c语言经典算法---计算Fibonacci数列
  7. 【Azure 机器人】微软Azure Bot 编辑器系列(1) : 创建一个天气对话机器人(The Bot Framework Composer tutorials)
  8. NOIP模拟测试13「矩阵游戏&amp;#183;跳房子&amp;#183;优美序列」
  9. OO unit2 summary
  10. Windows 11,一个新功能,一场新屠杀