給定乙個 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,...