#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define iinf 2000000000
#define linf 1000000000000000000ll
#define dinf 1e200
#define eps 1e-5
#define all(v) (v).begin(),(v).end()
#define sz(x) x.size()
#define pb push_back
#define mp make_pair
#define lng long long
#define sqr(a) ((a)*(a))
#define pii pair#define pll pair#define pss pair#define pdd pair#define x first
#define y second
#define pi 3.14159265359
#define ff(i,xi,n) for(int i=xi;i<=(int)(n);++i)
#define ffd(i,xi,n) for(int i=xi;i>=(int)(n);--i)
#define ffl(i,r) for(int i=head[r];i!=-1;i=edge[i].next)
#define cc(i,j) memset(i,j,sizeof(i))
#define two(x) ((lng)1<<(x))
#define n 500000
#define m 1000000
#define lson l , mid , rt << 1
#define rson mid + 1 , r , rt << 1 | 1
#define mod n
#define pmod(x) (x%mod+mod)%mod
using namespace std;
typedef vectorvi;
typedef vectorvs;
typedef unsigned int uint;
typedef unsigned lng ulng;
templateinline void checkmax(t &x,t y)
templateinline t min(t x,t y)
templateinline t max(t x,t y)
templatet lcm(t a,t b)
templatet abs(t a)
templateinline t lowbit(t n)
templateinline int countbit(t n)
templateinline bool isprimenumber(t n)
struct pp
a[n];
int n,newval[n],sum[n];
inline void update(int x,int add)
}inline int get(int x)
bool cmp(pp p,pp q)
int main()
sort(a+1,a+1+n,cmp);
int index=0;
a[0].val=iinf;
ff(i,1,n)
if(a[i].val!=a[i-1].val)
newval[a[i].id]=++index;
else
newval[a[i].id]=newval[a[i-1].id];
cc(sum,0);
lng res=0;
ffd(i,n,1)
res+=get(newval[i]-1),update(newval[i],1);
printf("%i64d\n",res);
}return 0;
}
POJ 2299(樹狀陣列,離散化)
題意 求逆序數 題解 可以將數字插入樹狀陣列,每次統計比單前數字小的個數,我們將每個數字的權值設定為1,那麼只要求在他前面數字的和就知道了,對應的逆序數格個數是i sum a i 這裡使用樹狀 陣列維護區間和 這一題由於數字範圍過大,記憶體無法承受如此大的空間,我們可以看到n最多才5e5,所以最多有...
poj 2299 樹狀陣列 離散化
樹狀陣列求逆序數 離散化 求逆序數時,加入當前數字,然後統計大於當前數字的數字個數,題目資料很大,需先將其離散化。include include include define n 500005 define lowbit x x x using namespace std int c n a n s...
POJ 2299 樹狀陣列,離散化
題目大意 求一組數的逆序數有多少個 題目解析 用樹狀陣列做,向下更新,向上求和,因為資料範圍太大,但是每個數都不一樣所以先離散化一下 ac include include include include includeusing namespace std typedef long long ll ...