设为首页 加入收藏

TOP

【luogu 1908】逆序对(二)
2017-10-16 18:20:49 】 浏览:7869
Tags:luogu 1908
t;>1; 28 build(ll);build(rr); 29 sum[rt]=sum[rt<<1]+sum[rt<<1|1]; 30 } 31 int query(int ql,int qr,int l,int r,int rt){ 32 if(ql<=l&&r<=qr) 33 return sum[rt]; 34 int mid=(l+r)>>1; 35 int ans=0; 36 if(ql<=mid) ans+=query(ql,qr,ll); 37 if(mid<qr) ans+=query(ql,qr,rr); 38 return ans; 39 } 40 void update(int pos,int l,int r,int rt){ 41 if(l==r){ 42 sum[rt]=1; 43 return ; 44 } 45 int mid=(l+r)>>1; 46 if(pos<=mid) update(pos,ll); 47 else update(pos,rr); 48 sum[rt]=sum[rt<<1]+sum[rt<<1|1]; 49 } 50 int main(){ 51 int n; 52 n=read(); 53 for(int i=1;i<=n;i++){ 54 a[i].w=read(); 55 a[i].id=i; 56 } 57 sort(a+1,a+n+1); 58 int cnt=0; 59 b[a[1].id]=++cnt; 60 for(int i=2;i<=n;i++){ 61 if(a[i-1].w!=a[i].w) b[a[i].id]=++cnt; 62 else b[a[i].id]=cnt; 63 } 64 build(1,n,1); 65 int ans=0; 66 for(int i=1;i<=n;i++){ 67 ans+=query(b[i],n,1,n,1); 68 update(b[i],1,n,1); 69 } 70 printf("%d",ans); 71 return 0; 72 }
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hdu 5919--Sequence II(主席树--.. 下一篇(笔记):初始化列表之初始化顺序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目