蒜頭君的排序

2022-05-12 12:05:53 字數 1318 閱讀 7703

蒜頭君是乙個愛思考的好孩子,這一天他學習了氣泡排序,於是他就想,把乙個亂序排列通過氣泡排序排至公升序需要多少次交換,這當然難不倒他,於是他想來點刺激的,給定乙個 1 \ldots n1…n 的排列,每次從該排列中選擇乙個區間 [l,r][l,r],問使用氣泡排序將該區間排至公升序需要多少次交換操作。

第一行乙個整數 nn,表示排列長度。

接下來一行 nn 個整數,表示該排列。

接下來一行乙個整數 mm,表示詢問次數。

接下來 mm 行,每行 22 個整數 l,rl,r,表示詢問 [l,r][l,r] 區間。

輸出 mm 行,每行 11 個整數,第 ii 行表示第 ii 個詢問的答案。

樣例輸入

10

9 8 7 4 5 6 10 3 2 1

52 4

8 10

2 85 9

4 9

樣例輸出

3313

79題解:

動態維護的樹狀陣列

一開始很糾結到底怎麼動態維護逆序對,之後看了資料才恍然大悟

最後乙個範圍意思就是左右端點的變化量<=7*10^6這樣連莫隊都不需要了,直接左右端點移動就行了區間[l,r]很容易堆出區間[l-1,r],[l+1,r],[l,r-1],[l,r+1]

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int c[300001],a[300001],rpos=0,lpos=1

,n,m,ans;

7void add(int x,intd)8

14}15int query(int

x)16

23return

s;24}25

intmain()

26 32 cin>>m;

33for (i=1;i<=m;i++)

3442

while (rpos>r)

4348

while (lpos

4954

while (lpos>l)

5560 printf("

%d\n

",ans);61}

62 }

蒜頭君的排序

蒜頭君的排序 蒜頭君是乙個愛思考的好孩子,這一天他學習了氣泡排序,於是他就想,把乙個亂序排列通過氣泡排序排至公升序需要多少次交換,這當然難不倒他,於是他想來點刺激的,給定乙個 1 ldots n1 n 的排列,每次從該排列中選擇乙個區間 l,r l,r 問使用氣泡排序將該區間排至公升序需要多少次交換...

蒜頭君面試

題目 問題描述 蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數n 1 n 100000 接下來一行輸入n個 int 範圍內的整數。輸出格式 ...

蒜頭君下棋

蒜頭君下棋 共一行,兩個整數nn和mm 1 leq n m leq 10001 n,m 1000 代表棋盤一共有 nn 行 mm 列。輸出乙個整數,代表棋盤上最多能放的馬的數量。樣例輸入1複製 2 4樣例輸出1複製 4樣例輸入2複製 3 4樣例輸出2複製 6 1 當棋盤只有一行時,棋盤上全放上棋子即...