★★★   输入文件:inverse.in   输出文件:inverse.out   简单对比
时间限制:2 s   内存限制:128 MB

【题目描述】

对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。

【输入格式】

输入第一行包含两个整数nm,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。
 

【输出格式】

 
输出包含m行,依次为删除每个元素之前,逆序对的个数。

【样例输入】

5 4
1
5
3
4
2
5
1
4
2

【样例输出】

5
2
2
1 样例解释
(1,5,3,4,2)(1,3,4,2)(3,4,2)(3,2)(3)。

【提示】

N<=100000 M<=50000

【来源】

 

【题目来源】

耒阳大世界(衡阳八中) OJ 3295

树状数组+主席树

根cdq分治的速度差远了

屠龙宝刀点击就送

#include <algorithm>
#include <cstdio>
#define N 100005
typedef long long LL;
int n,m,a[N],pos[N],size,rt[N],ls[N*],rs[N*],sum[N*],tot;
inline int lowbit(int x) {return x&(-x);}
void update(int l,int r,int &x,int t,int v)
{
if(!x) x=++tot;
sum[x]+=v;
if(l==r) return;
int mid=(l+r)>>;
if(t<=mid) update(l,mid,ls[x],t,v);
else update(mid+,r,rs[x],t,v);
}
void modify(int x,int y,int v)
{
for(;x<=n;x+=lowbit(x))
update(,n,rt[x],y,v);
}
LL query(int l,int r,int x,int L,int R)
{
if(!x) return ;
if(L<=l&&r<=R) return sum[x];
int mid=(l+r)>>;LL ret=;
if(L<=mid) ret+=query(l,mid,ls[x],L,R);
if(R>mid) ret+=query(mid+,r,rs[x],L,R);
return ret;
}
LL ask(int l,int r,int L,int R)
{
LL ret=;
for(int i=l-;i;i-=lowbit(i)) ret-=query(,n,rt[i],L,R);
for(int i=r;i;i-=lowbit(i)) ret+=query(,n,rt[i],L,R);
return ret;
}
int main()
{
freopen("inverse.in","r",stdin);
freopen("inverse.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
{
scanf("%d",&a[i]);
pos[a[i]]=i;
modify(i,a[i],);
}
LL ans=;
for(int i=;i<=n;++i) ans+=ask(,i-,a[i]+,n)+ask(i+,n,,a[i]-);
ans>>=;
for(int v;m--;)
{
printf("%lld\n",ans);
scanf("%d",&v);
v=pos[v];
ans-=ask(,v-,a[v]+,n)+ask(v+,n,,a[v]-);
modify(v,a[v],-);
}
return ;
}

最新文章

  1. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
  2. [Voice communications] 看得到的音频流
  3. EF连接PostgreSql
  4. JAVA 多线程学习总结
  5. 布局容器layout Container
  6. js 数组排序
  7. php中正则表达式的匹配和数据验证总结
  8. JDBC中的PreparedStatement-防止SQL注入攻击
  9. 设计模式之:组合模式(Composite)
  10. spring事物传播机制 事物隔离级别
  11. CSS Hack是什么意思
  12. Mac下搭建SVN服务器
  13. 《Effective Objective-C 2.0》 读后总结
  14. 小乌龟 git ssh配置问题解决, 没有的话执行pull push会没有权限,因为没有git的ssh
  15. Contest2158 - 2019-3-14 高一noip基础知识点 测试3 题解版
  16. 聊聊call、apply、bind的故事
  17. tp3.2上传图片生成缩略图
  18. java集合类整理
  19. c++类内存分布解析
  20. hive1.2.1安装步骤(在hadoop2.6.4集群上)

热门文章

  1. WPF RichTextBox 插入回车
  2. QMYSQL driver not loaded 的原理和解决办法
  3. 安装wepack
  4. Unity 5.6 beta版本新特性
  5. 洛谷P3763 [TJOI2017]DNA(后缀自动机)
  6. Vue多环境配置
  7. 洛谷P4407 [JSOI2009]电子字典
  8. react-native-video的使用
  9. Mac用brew安装MySQL
  10. 在线获取键盘按键值(ascii码)工具