bozj3289 Mato的檔案管理

2022-03-25 23:30:38 字數 896 閱讀 9539

莫隊裸題。。

開個樹狀陣列,跟維護逆序對一模一樣(動態逆序對?由於只有邊界上的點加減,應該算作偽動態逆序對。)。。

然後記得離散化一下。。不然就炸了。。

(似乎不會有重複的數字吧。。)

(似乎開平衡樹的話也能跑。。然而平衡樹寫掛了。。。開平衡樹唯一好的地方就是不需要離散化了。。不過沒什麼用。。)

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 

7 #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 }

view code

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有乙個習慣,他...