求逆序對數目

2021-10-08 18:18:02 字數 1050 閱讀 9648

題目描述

給定乙個序列 a1,

a2,…

,a

na_1,a_2,…,a_n

a1​,a2

​,…,

an​,如果存在 a

i>aj

a_i>a_j

ai​>aj

​ 且 i

i<

j ,那麼我們稱之為逆序對的,求逆序對的數目。

輸入第一行為 n

nn,表示序列長度,接下來的 n

nn 行,第 i+1

i+1i+

1 行表示序列中的第 i

ii 個數。

輸出所有逆序對總數。

樣例輸入43

232樣例輸出3提示

n ≤1

05

n\le 10^5

n≤105,ai≤

10

5a_i\le 10^5

ai​≤10

5

#include.h>

using namespace std;

#define n

100000+5

#define inf

0x3f3f3f3f

#define full

(a,b)

memset

(a,b,sizeof a)

#define lowbit

(x) x&

(~x+1)

int n,arr[n]

,tree[n]

,ma;

long long ans;

void

update

(int x,int y)

}long long sum

(int x)

return ret;

}int main()

for(int i=n;i>=

1;i--

)printf

("%lld"

,ans)

;}

求逆序對數目

設計乙個平均時間為o n logn o nlogn o nlog n 的演算法,在n 1 n 1000 n 1 n 1000 n 1 n 1 000 個元素的陣列中尋找逆序對數目 這裡介紹分治的思想,用歸併對陣列進行排序,在排序的過程中,即可順便將逆序對數目求出來 首先,不斷地二分這個陣列,直到最小...

分治法求逆序對數目

設a 1.n 是乙個包含n個不同整數的陣列。如果在ia j 則 i,j 就稱為a中的乙個逆序對 inversion 給出乙個演算法,確定n個元素的任何排列中逆序對的書目。時間複雜度為o nlgn 分治法求解思路 分解 將陣列a 1.n 分為兩個子串行a 1.p 和a p 1,n 二分法將其分解。解決...

線段樹 離散化 求逆序對數目

題目如下 第三題 lyp 的密碼 lyp 題目描述 眾所周知,lyp 喜歡以用各種方式折磨別人為樂,這次,他趁 wars 不在時在他的電腦上 掛了一把神奇的鎖,這把鎖需要一串巨長無比的數字密碼才可以解開,這 個密碼由 lyp 自 己保管,這樣 wars 就沒法 kingdom rush 了。但 wa...