BZOJ[3289]Mato的文件管理 莫队+树状数组
2018-03-08 10:06
381 查看
传送门ber~
区间逆序对数?
因为可以离线,所以考虑莫队
四种情况分别考虑,用树状数组维护即可(见代码)
代码如下:
区间逆序对数?
因为可以离线,所以考虑莫队
四种情况分别考虑,用树状数组维护即可(见代码)
代码如下:
#include<algorithm> #include<ctype.h> #include<cstdio> #include<cmath> #define N 50050 using namespace std; inline int read(){ int x=0,f=1;char c; do c=getchar(),f=c=='-'?-1:f; while(!isdigit(c)); do x=(x<<3)+(x<<1)+c-'0',c=getchar(); while(isdigit(c)); return x*f; } struct Query{ int l,r,id; }q ; int n,m,Block_size; int a ,b ,block ,ans ,p ; int l=1,r,tmp,tot; inline bool cmp(Query a,Query b){ return block[a.l]==block[b.l]?a.r<b.r:block[a.l]<block[b.l]; } inline void add(int x,int v){ for(;x<=n;x=x+(x&-x)) p[x]+=v; return; } inline int sum(int x){ int tmp=0; for(;x;x=x-(x&-x)) tmp+=p[x]; return tmp; } int main(){ n=read(); Block_size=sqrt(n); for(int i=1;i<=n;i++){ b[i]=a[i]=read(); block[i]=(i-1)/Block_size+1; } sort(b+1,b+n+1); tot=unique(b+1,b+n+1)-b-1; for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+tot+1,a[i])-b; m=read(); for(int i=1;i<=m;i++){ q[i].l=read();q[i].r=read(); q[i].id=i; } sort(q+1,q+m+1,cmp); for(int i=1;i<=m;i++){ while(l<q[i].l){ tmp-=sum(a[l]-1); add(a[l++],-1); } while(l>q[i].l){ tmp+=sum(a[l-1]-1); add(a[--l],1); } while(r<q[i].r){ tmp+=r-l+1-sum(a[r+1]); add(a[++r],1); } while(r>q[i].r){ tmp-=r-l+1-sum(a[r]); add(a[r--],-1); } ans[q[i].id]=tmp; } for(int i=1;i<=m;i++) printf("%d\n",ans[i]); return 0; }
相关文章推荐
- [Bzoj3289]Mato的文件管理(莫队 + 树状数组)
- BZOJ 3289 Mato的文件管理 莫队算法+树状数组
- BZOJ 3289 Mato的文件管理(莫队+树状数组)
- bzoj3289 Mato的文件管理 莫队+树状数组
- BZOJ 3289 Mato的文件管理 莫队算法+树状数组
- BZOJ3289 Mato的文件管理(莫队+树状数组)
- bzoj 3289: Mato的文件管理 (莫队算法 + 树状数组)
- bzoj 3289: Mato的文件管理 莫队+树状数组
- 【BZOJ】3289: Mato的文件管理(莫队算法+树状数组)
- bzoj3289 Mato的文件管理 莫队+树状数组
- 【bzoj3289】Mato的文件管理 离散化+莫队算法+树状数组
- bzoj3289 Mato的文件管理 莫队+树状数组
- [BZOJ3289]Mato的文件管理(莫队+树状数组)
- 【BZOJ3289】Mato的文件管理,莫队+树状数组
- [bzoj3289]Mato的文件管理 莫队+树状数组
- BZOJ_3289_Mato的文件管理_莫队+树状数组
- 【bzoj 3289】Mato的文件管理(莫队算法+树状数组)
- [BZOJ 3289] Mato的文件管理 · 莫队算法 & 树状数组
- 【bzoj3289】Mato的文件管理 莫队+树状数组
- BZOJ - 3289 Mato的文件管理(莫队算法+树状数组)