树状树组离散化求逆序对模板
Posted hh13579
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树状树组离散化求逆序对模板相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <cstring> #include <stack> #include <cstdio> #include <cmath> #include <queue> #include <algorithm> #include <vector> #include <set> #include <map> using namespace std; #define ll long long const int N=500005; int a[N],b[N],c[N],d[N],n,m=0; void discrete() for(int i=1;i<=n;i++) d[i]=a[i]; sort(d+1,d+n+1); for(int i=1;i<=n;i++) if(i==1||d[i]!=d[i-1]) b[++m]=d[i]; int query(int x) return lower_bound(b+1,b+m+1,x)-b; int ask(int x) int ans=0; for(;x;x-=x&-x) ans=ans+c[x]; return ans; void add(int x,int y) for(;x<=N-1;x+=x&-x) c[x]+=y; int main() ll ans=0; cin>>n; for(int i=1;i<=n;i++) scanf("%d",&a[i]); discrete(); for(int i=1;i<=n;i++) add(query(a[i]),1); ans+=i-ask(query(a[i])); cout<<ans<<"\n"; return 0;
以上是关于树状树组离散化求逆序对模板的主要内容,如果未能解决你的问题,请参考以下文章
Poj 2299 - Ultra-QuickSort 离散化,树状数组,逆序对
CCPC河南省赛B-树上逆序对| 离线处理|树状数组 + 线段树维护逆序对 + dfs序 + 离散化
Codeforces Round #301 (Div. 2) E. Infinite Inversions —— 逆序对 离散化 + 树状数组