求逆序對有三種以上方法:1、離散樹狀陣列,2、線段樹,3、歸併排序
今天做了下洛谷的p1908逆序對;
1、一開始用樹狀陣列,一直re,後來在發現自己一直忽略離散化。
#include #includeusing
namespace
std;
const
int maxn = 400000+5
;typedef
long
long
ll;ll n,hash[maxn],bt[maxn];
struct
node a[maxn];
ll lowbit(ll x)
void
add(ll i,ll b)
}ll qu(ll i)
return
ans;
}bool
cmp(node a,node b)
intmain()
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
//離散化結束;
ll sum = 0
;
for(int i=1;i<=n;i++)
cout
return0;
}
樹狀陣列 (離散化 樹狀陣列 求逆序對)
sample test s input 52 3 1 5 4 output 3 題目大意 求逆序對的個數 題目分析 求逆序對有很多方法,比如說用合併排序 分治 樹狀陣列 線段樹,甚至連暴力 氣泡排序 也可以做,但是要注意會不會超時。這裡就講一下樹狀陣列的方法,這一題最有意思的是離散化的方法,這個方法...
樹狀陣列求逆序對及離散化
樹狀陣列求逆序對及離散化 逆序對指的是乙個序列中有兩個數ai和aj,iaj,即它們下標與數值的增減不一致,那麼對於這個問題 求乙個序列中逆序對的個數,該如何解決呢?我最初接觸到的方法是歸併排序,是個很不錯的方法,但是對於向我一樣的蒟蒻 還是有理解難度,而今天講的樹狀陣列解法,至少 理解難度降低了不少...
SGU180(樹狀陣列,逆序對,離散)
inversions time limit per test 0.25 sec.memory limit per test 4096 kb input standard output standard there are n integers 1 n 65537 a1,a2,an 0 ai 10 9...