蒜頭君是乙個愛思考的好孩子,這一天他學習了氣泡排序,於是他就想,把乙個亂序排列通過氣泡排序排至公升序需要多少次交換,這當然難不倒他,於是他想來點刺激的,給定乙個 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最後乙個範圍意思就是左右端點的變化量<=7*10^6這樣連莫隊都不需要了,直接左右端點移動就行了區間[l,r]很容易堆出區間[l-1,r],[l+1,r],[l,r-1],[l,r+1]79題解:
動態維護的樹狀陣列
一開始很糾結到底怎麼動態維護逆序對,之後看了資料才恍然大悟
1 #include2 #include3 #include4 #include5using
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 當棋盤只有一行時,棋盤上全放上棋子即...