bzoj3295 动态逆序对
Description
Input
Output
将原数列建立归并树,归并树每个节点记录区间排序后结果、被删除的数的个数、树状数组记录前i个数被删了几个,每删除一个数前查找左边比它大的数和右边比它小的数的个数并更新答案。
#include<cstdio>
#include<algorithm>
inline int read(){
int x=,c=getchar();
while(c>||c<)c=getchar();
while(c>&&c<)x=x*+c-,c=getchar();
return x;
}
inline void mins(int&a,int b){if(a>b)a=b;}
inline void maxs(int&a,int b){if(a<b)a=b;}
long long ans=;
int t[],v[],id[];
int vs[][],bit[][],dt[][];
int X,v0;
void build(int L,int R,int h=){
int*x=vs[h];
if(L<R){
int M=L+R>>;
build(L,M,h+);
build(M+,R,h+);
int p1=L,p2=M+,*p3=x+L,*y=vs[h+];
while(p1<=M&&p2<=R)*(p3++)=y[(y[p1]<y[p2]?p1:p2)++];
while(p1<=M)*(p3++)=y[p1++];
while(p2<=R)*(p3++)=y[p2++];
}else x[L]=v[L];
}
void s1(int L,int R,int h=){
int*x=vs[h];
if(R<X){
int p=std::upper_bound(x+L,x+R+,v0)-(x+L);
ans-=R+-L-p;
for(int*a=bit[h]+L-;p;p-=p&-p)ans-=a[p];
ans+=dt[h][L];
return;
}
if(L!=R){
int M=L+R>>;
s1(L,M,h+);
if(X->M)s1(M+,R,h+);
}
}
void s2(int L,int R,int h=){
int*x=vs[h];
if(X<L){
int p=std::lower_bound(x+L,x+R+,v0)-(x+L);
ans-=p;
for(int*a=bit[h]+L-;p;p-=p&-p)ans+=a[p];
return;
}
if(L!=R){
int M=L+R>>;
if(X<M)s2(L,M,h+);
s2(M+,R,h+);
}
}
void del(int L,int R,int h=){
int*x=vs[h];
++dt[h][L];
int p=std::lower_bound(x+L,x+R+,v0)-(x+L)+;
for(int*a=bit[h]+L-,N=R-L+;p<=N;p+=p&-p)++a[p];
if(L!=R){
int M=L+R>>;
if(X<=M)del(L,M,h+);
else del(M+,R,h+);
}
}
int n,m;
int main(){
n=read();m=read();
for(int i=,a;i<=n;i++){
v[i]=a=read();
id[a]=i;
ans+=i-;
for(int w=a;w;w-=w&-w)ans-=t[w];
while(a<=n)++t[a],a+=a&-a;
}
build(,n);
for(int i=;i<=m;i++){
printf("%lld\n",ans);
v0=read();
X=id[v0];
s1(,n);
s2(,n);
del(,n);
}
return ;
}
bzoj3295 动态逆序对的更多相关文章
- BZOJ3295 动态逆序对(树状数组套线段树)
[Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6058 Solved: 2117[Submit][Status][D ...
- BZOJ3295动态逆序对
一道比较傻的CDQ分治 CDQ: 主要用于解决三位偏序的问题 #include<cstdio> #include<cctype> #include<algorithm&g ...
- 【BZOJ3295】动态逆序对(线段树,树状数组)
[BZOJ3295]动态逆序对(线段树,树状数组) 题面 Description 对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的 ...
- 【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
[BZOJ3295][Cqoi2011]动态逆序对 Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依 ...
- bzoj3295 [Cqoi2011]动态逆序对 cdq+树状数组
[bzoj3295][Cqoi2011]动态逆序对 2014年6月17日4,7954 Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数. ...
- bzoj3295 洛谷P3157、1393 动态逆序对——树套树
题目:bzoj3295 https://www.lydsy.com/JudgeOnline/problem.php?id=3295 洛谷 P3157(同一道题) https://www.luogu.o ...
- 【题解】动态逆序对 [CQOI2011] [P3157] [BZOJ3295] [P1393]
[题解]动态逆序对 [CQOI2011] [P3157] [BZOJ3295] [P1393] 水一水QAQ 题目链接: \([P3157]\) \([BZOJ3295]\) [题目描述] 对于一个序 ...
- [bzoj3295][Cqoi2011]动态逆序对_主席树
动态逆序对 bzoj-3295 Cqoi-2011 题目大意:题目链接. 注释:略. 想法:直接建立主席树. 由于是一个一个删除,所以我们先拿建立好的root[n]的权值线段树先把总逆序对求出来,接着 ...
- bzoj3295[Cqoi2011]动态逆序对 树套树
3295: [Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 5987 Solved: 2080[Submit][Sta ...
随机推荐
- Vue面试题整理
1:什么是MVVM MVVM是是Model-View-ViewModel的缩写,Model代表数据模型,定义数据操作的业务逻辑,View代表视图层,负责将数据模型渲染到页面上,ViewModel通过双 ...
- pymysql 返回数据为字典形式(key:value--列:值)
一.需求 在数据库的操作中,有时需要直接返回数据库表中的栏位名称+栏位值的key:value这种字典格式的方法. Python DB-API使用流程: 引入API模块. 获取与数据库的连接. 执行SQ ...
- DevExpress v18.1新版亮点——WPF篇(四)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载& ...
- DevExpress v17.2—WPF篇(一)
用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...
- Oracle 常用的一些命令
启动监听:lsnrctl start 查看监听:lsnrctl status 停止监听:lsnrctl stop 1.oracle 数据服务器包括:实例进程和数据库: 实例进程包括:memory ...
- CUDA ---- Stream and Event
Stream 一般来说,cuda c并行性表现在下面两个层面上: Kernel level Grid level 到目前为止,我们讨论的一直是kernel level的,也就是一个kernel或者一个 ...
- myeclipse10 破解版安装
安装包请看百度云: step1 step2 step3 step4 step5 step6 安装 svn,可以参考: http://www.cnblogs.com/OnlyCT/p/6061134.h ...
- js 的垃圾回收器 原理 坑 优化-- 待续
JavaScript垃圾回收的机制很简单: 找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是时时的, 因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行. 什么叫不再使用的变 ...
- webStrom 美化
webStrom 激活: 注册时,在打开的License Activation窗口中选择“License server”,在输入框输入下面的网址: http://idea.iteblog.com/ke ...
- 为iOS设计:图形和性能
在之前的文章里,我们探讨了基于多种不同技术来实现自定义的UIButton,当然不同的技术所涉及到的代码复杂度和难度也不一样.但是我也有意提到了基于不同方法的实现所体现出的性能表现也不一一相同. [在屏 ...