NC20861兔子的逆序對

2021-10-19 13:13:28 字數 1386 閱讀 1048

首先吐槽:這只兔子的事真多~~~~

首先,啊,不對,(假裝沒寫)

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行每行乙個字串,表示反轉後序列逆序對個數的奇偶性,如果是逆序對個...