題目描述
給定乙個序列 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...