TT的神秘禮物 Week4作業C題

2021-10-04 07:00:28 字數 1126 閱讀 6840

給定乙個 n 個數的陣列 cat[i],並用這個陣列生成乙個新陣列 ans[i]。新陣列定義為對於任意的 i, j 且 i != j,均有 ans = abs(cat[i] - cat[j]),1 <= i < j <= n。試求出這個新陣列的中位數,中位數即為排序之後 (len+1)/2 位置對應的數字,』/』 為下取整。

輸入:多組輸入,每次輸入乙個 n,表示有 n 個數,之後輸入乙個長度為 n 的序列 cat, cat[i] <= 1e9 , 3 <= n <= 1e5

輸出:輸出新陣列 ans 的中位數

樣例:input:

41 3 2 4

31 10 2

output:18

首先,暴力求解不可取。

求中位數的另一種方式:

計算p在數列中的名次即可。

如果p從小到大排的名次比中位數小,說明什麼? p比中位數要小

如果p從小到大排的名次比中位數大,說明什麼? p比中位數要大

如果p從小到大排的名次等於中位數,說明什麼? p就是中位數

由此得可以使用二分。

所以總的思路是,先通過排序去除絕對值,之後計算cat[j]-cat[i]的二元組對數,得到p在差序列中的排名。

#include

#include

#include

using namespace std;

int n,flag,a[

100010];

intinit()

while

(c>=

'0'&&c<=

'9')

return f*p;

}bool judge

(int x)

if(j!=0)

tmp+

=j-i;}if

(tmp>=flag)

return1;

return0;

}int

main()

if(judge

(l))

printf

("%d\n"

,l);

else

printf

("%d\n"

,r);

}return0;

}

WEEK4 作業 C TT 的神秘禮物

tt 是一位重度愛貓人士,每日沉溺於 b 站上的貓咪頻道。有一天,tt 的好友 zjm 決定交給 tt 乙個難題,如果 tt 能夠解決這個難題,zjm 就會買乙隻可愛貓咪送給 tt。任務內容是,給定乙個 n 個數的陣列 cat i 並用這個陣列生成乙個新陣列 ans i 新陣列定義為對於任意的 i,...

week4作業 C TT的神秘禮物

tt 是一位重度愛貓人士,每日沉溺於 b 站上的貓咪頻道。有一天,tt 的好友 zjm 決定交給 tt 乙個難題,如果 tt 能夠解決這個難題,zjm 就會買乙隻可愛貓咪送給 tt。任務內容是,給定乙個 n 個數的陣列 cat i 並用這個陣列生成乙個新陣列 ans i 新陣列定義為對於任意的 i,...

week4作業題 C TT的神秘禮物

tt 是一位重度愛貓人士,每日沉溺於 b 站上的貓咪頻道。有一天,tt 的好友 zjm 決定交給 tt 乙個難題,如果 tt 能夠解決這個難題,zjm 就會買乙隻可愛貓咪送給 tt。任務內容是,給定乙個 n 個數的陣列 cat i 並用這個陣列生成乙個新陣列 ans i 新陣列定義為對於任意的 i,...