博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CQOI2011 动态逆序对
阅读量:5022 次
发布时间:2019-06-12

本文共 1991 字,大约阅读时间需要 6 分钟。

题解:

将前n个数看作插入,后m个数仍看作删除。

然后就是cdq分治。

代码:

#include
#include
#include
using namespace std;#define N 150050#define ll long longinline int rd(){ int f=1,c=0;char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){c=10*c+ch-'0';ch=getchar();} return f*c;}int n,m;struct node{ int a,b,c,d;}p[N],tmp[N];int pos[N];ll ans[N];int f[N];void up(int x,int d){ if(!x)return ; while(x<=100000)f[x]+=d,x+=(x&(-x));}int down(int x){ if(!x)return 0; int ret = 0; while(x)ret+=f[x],x-=(x&(-x)); return ret;}void Sort(int l,int r){ int mid = (l+r)>>1; int i=l,j=mid+1,k=l; while(i<=mid&&j<=r) { while(p[i].a<=p[j].a&&i<=mid) { tmp[k]=p[i]; i++,k++; } while(p[i].a>p[j].a&&j<=r) { tmp[k]=p[j]; j++,k++; } } while(i<=mid) { tmp[k]=p[i]; i++,k++; } while(j<=r) { tmp[k]=p[j]; j++,k++; } for(i=l;i<=r;i++) p[i]=tmp[i];}void cdq(int l,int r){ if(l==r)return ; int mid = (l+r)>>1; cdq(l,mid),cdq(mid+1,r); Sort(l,mid),Sort(mid+1,r); int i,j; j = l; for(i=mid+1;i<=r;i++) { while(j<=mid&&p[i].a>=p[j].a)up(p[j].b,p[j].d),j++; ans[p[i].c]+=p[i].d*(down(n)-down(p[i].b)); } for(j=j-1;j>=l;j--)up(p[j].b,-p[j].d); j = mid; for(i=r;i>mid;i--) { while(j>=l&&p[i].a<=p[j].a)up(p[j].b,p[j].d),j--; ans[p[i].c]+=p[i].d*down(p[i].b-1); } for(j=j+1;j<=mid;j++)up(p[j].b,-p[j].d);}int main(){ n=rd(),m=rd(); for(int x,i=1;i<=n;i++) { x=rd(); p[i].a=i,p[i].b=x,p[i].c=0,p[i].d=1; pos[x]=i; } for(int x,j,i=1;i<=m;i++) { x=rd();j=i+n; p[j].a=pos[x],p[j].b=x,p[j].c=i,p[j].d=-1; } cdq(1,n+m); for(int i=1;i<=m;i++)ans[i]+=ans[i-1]; for(int i=0;i

 

转载于:https://www.cnblogs.com/LiGuanlin1124/p/10143340.html

你可能感兴趣的文章
php面向对象编程(oop)基础知识示例解释
查看>>
1.在数组中找到与给定总和的配对
查看>>
树的子结构
查看>>
关于根据Build Platform或者OS 加载x86或者x64 dll的问题
查看>>
程序员高效开发的几个技巧
查看>>
js-权威指南学习笔记19.2
查看>>
hexo 搭建博客
查看>>
关于 UIWebView 几个高级用法
查看>>
maven创建的项目中无法创建src/main/java 解决方案
查看>>
华为软件开发云测评报告二:代码检查
查看>>
集合1
查看>>
js 原生 ajax
查看>>
关键词 virtual
查看>>
建造者模式(屌丝专用)
查看>>
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>