對於區間詢問,我們可以想到莫隊,而逆序對則需要用樹狀陣列來維護。
因此我們便可以動態維護區間的逆序對。例如:
然後用莫隊和樹狀陣列維護即可。
**如下:
#include
using
namespace std;
const
int n =
2000000
;int n, m, ans, t, cnt =0;
int a[n]
, ans[n]
, b[n]
;map<
int,
int>mp;
struct node
} q[n]
;inline
intread
(void
)while
(c>=
'0'&& c<=
'9') s = s*
10+c-
48,c =
getchar()
;return s*w;
}struct tree
;#define lowbit(i) (i & -i)
void
add(
int x,
int v)
intask
(int x)
} tree;
void
init
(void
)int
main
(void
)sort
(q+1
,q+m+1)
;int l =
1, r =0;
ans =0;
for(
int i=
1;i<=m;
++i)
for(
int i=
1;i<=m;
++i)
printf
("%d\n"
, ans[i]);
return0;
}
BZOJ 3289 Mato的檔案管理 莫隊演算法
詢問區間內逆序對的個數。區間轉移是o logn 的,加上莫隊總複雜度 o nn logn include include include using namespace std const int n 50005 int block n a n c n n unsigned x n t n stru...
莫隊 樹狀陣列 AHOI 作業
3236 ahoi2013 作業 time limit 100 sec memory limit 512 mb submit 1716 solved 690 submit status discuss description input output sample input 3 41 2 2 1 ...
莫隊 樹狀陣列 AHOI 作業
3236 ahoi2013 作業 time limit 100 sec memory limit 512 mb submit 1716 solved 690 submit status discuss description input output sample input 3 41 2 2 1 ...