時間限制: 1 s
空間限制: 128000 kb
題目等級 : ** gold
題解檢視執行結果
給定乙個序列a1,a2,…,an,如果存在iaj,那麼我們稱之為逆序對,求逆序對的數目
資料範圍:n<=105。ai<=105。時間限制為1s。
輸入描述 input description
第一行為n,表示序列長度,接下來的n行,第i+1行表示序列中的第i個數。
輸出描述 output description
所有逆序對總數.
樣例輸入 sample input
樣例輸出 sample output
/*權值線段樹模板
首先我們更改線段樹葉子節點處儲存的內容,將其更改為權值,並且記錄對於乙個權值x的個數。
那麼我們首先構建一棵空樹,
對於每次插入的數字x,我們查詢x+1到max區間的數字存在的個數,並將這個個數加入答案,
然後插入這個數字。最後輸出答案就可以了。。
*/#include
#include
#include
#define n 200007
using
namespace
std;
intn,x;
long
long
ans;
struct
tree
tr[n
<<2
];void push_up(int
now)
void build(int now,int l,int
r)void insert(int now,intk)
int mid=(tr[now].l+tr[now].r)>>1
;
if(x>mid) insert(now<<1|1
,k);
if(x<=mid) insert(now<<1
,k);
push_up(now);
}long
long gets(int now,int l,int
r)int
main()
printf(
"%lld\n
",ans);
return0;
}
CODEVS 1688 求逆序對
題目描述 description 給定乙個序列a1,a2,an,如果存在iaj,那麼我們稱之為逆序對,求逆序對的數目 資料範圍 n 10 5。ai 10 5。時間限制為1s。輸入描述 input description 第一行為n,表示序列長度,接下來的n行,第i 1行表示序列中的第i個數。輸出描述...
CodeVS1688 求逆序對
給定乙個序列a1,a2,an,如果存在iaj,那麼我們稱之為逆序對,求逆序對的數目 第一行為n,表示序列長度,接下來的n行,第i 1行表示序列中的第i個數。所有逆序對總數.資料範圍 n 105。ai 105。時間限制為1s。歸併排序,合併的時候,如果a i a j 那麼a i mid a j 所以給...
AC日記 codevs 1688 求逆序對
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 給定乙個序列a1,a2,an,如果存在iaj,那麼我們稱之為逆序對,求逆序對的數目 資料範圍 n 105。ai 105。時間限制為1s。輸入描述 input description 第一行為n,表示序列長度,接下來...