莫隊裸題。。
開個樹狀陣列,跟維護逆序對一模一樣(動態逆序對?由於只有邊界上的點加減,應該算作偽動態逆序對。)。。
然後記得離散化一下。。不然就炸了。。
(似乎不會有重複的數字吧。。)
(似乎開平衡樹的話也能跑。。然而平衡樹寫掛了。。。開平衡樹唯一好的地方就是不需要離散化了。。不過沒什麼用。。)
1 #include 2 #include 3 #include 4 #include 5 #include 6 #includeview code7 #include 8 #include 9 #include 10 #include 11 #include 12 #include
13using
namespace
std;
1415
const
int n=600000;16
struct
ask22
}bs[n];
23bool cmp(ask a,ask b)
24int n,q,a[n],b[n],l=1
,r,v[n],now;
25void add(int i,int
vv)28
int ask(int i,int ret=0)32
intmain()
45while(r>bs[i].r)
50while(l
55while(l>bs[i].l)
60 bs[i].ans=now;61}
62 sort(bs+1,bs+1+q,cmp);
63for(int i=1;i<=q;i++)printf("
%d\n
",bs[i].ans);
64 }
bzoj3289 Mato的檔案管理
給定乙個序列,每次詢問乙個區間,你可以交換相鄰兩個元素,這個區間你最少需要多少次交換才能使其有序。我們觀察,每次交換如果交換a i 和a i 1 那麼顯然a i a i 1 交換後逆序對個數減一。當序列逆序對個數為0時序列就有序。那麼顯然題意就是詢問區間逆序對個數。我們可以用莫隊演算法來做。因為它符...
bzoj 3289 Mato的檔案管理
description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...
bzoj3289 Mato的檔案管理
description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...