首先吐槽:這只兔子的事真多~~~~
首先,啊,不對,(假裝沒寫)
second,一定要看備註:用快讀
第三:cout會t,printf不會
這其實就是先求出逆序對的數量(就是歸併排序),然後就非常簡單了(這裡有一條重要資訊::::乙個排序中任意兩個元素對換,排列會改變逆序數)
於是我們可以在反轉區間上找找規律
設反轉區間的左右區間分別是l,r
反轉區間元素個數:2(個) 反轉元素有 1(對)
3(個) 1(對)
4(個) 2(對)
5(個) 2(對)
6(個) 3(對)
7(個) 3(對)
好了,應該發現規律了吧!
假設一開始逆序數為ans,那麼反轉後的就會變為ans+(r-l+1)/2
**:
#include
using
namespace std;
const
int maxn =
1e5+5;
int a[maxn]
, b[maxn]
;long
long ans =0;
inline
intread()
while
(ch >=
'0'&& ch <=
'9')
if(flag)
return x;
return
~(x -1)
;}void
megre_sort
(int l,
int mid,
int r)
else
}for
(int i = l;i <= r;i++)}
void
dichotomy
(int l,
int r)
megre_sort
(l, mid, r);}
intmain()
int m;
m =read()
;dichotomy(1
, n)
;while
(m--
)else
}return0;
}
兔子的逆序對
兔子的逆序對 時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 第一行乙個整數 n,表示序列的大小。第二行 n 個整數ai 表示序列的各個元素。第三行乙個整數m,表示操作個數。接下來 m 行,每行兩個整數 l,r,...
兔子的逆序對
輸出描述 輸出共m行每行乙個字串,表示反轉後序列逆序對個數的奇偶性,如果是逆序對個數奇數,輸出 dislike 不含引號 如果是偶數,輸出 like 示例1輸入 41 2 3 4 41 2 3 41 4 2 3輸出 dislike like like dislike 說明注意 以下的 i,j 指的是...
兔子的逆序對
兔子的逆序對 歸併排序做法 序言題目描述 輸入格式 第一行乙個整數 n,表示序列的大小。第二行 n 個整數ai 表示序列的各個元素。第三行乙個整數m,表示操作個數。接下來 m 行,每行兩個整數 l,r,表示反轉的區間。輸出格式 輸出共m行每行乙個字串,表示反轉後序列逆序對個數的奇偶性,如果是逆序對個...