偽中位數問題

2021-10-05 05:07:02 字數 998 閱讀 2274

n個數的偽中位數定義為從小到大排序後第[(n + 1)/2]個數。其中,[x]的意思是x向下取整。

現在,給你n個數,你需要向其中增加最少的數,使得k成為最後這一組數的偽中位數。

請問你需要加入數的最少數

/*  輸入第一行包含兩個數n,k,意為原來數的個數和最後的偽中位數。

接下來一行輸入n個數,空格隔開,代表原來的數

思路:將輸入的數先進行排序,找到k這個數在原來的數中的位置begin,end(因為k在原來的數中可能會重複,所以找到起始位置和終止位置)

分三種情況討論:

1.偽中位數在begin和end區間內

2.偽中位數在begin和end區間左邊

3.偽中位數在begin和end區間右邊

*/#include

#include

#include

using

namespace std;

intgetincreasedquantity

(vector<

int>

& datas,

int n,

int k)

} begin++

; end++

;return

(mid - begin)

>=0&&

(mid - end)

<=0?

0:(mid - end)

>0?

(mid - end)

:(begin - mid);}

intmain()

sort

(datas.

begin()

, datas.

end())

; cout <<

getincreasedquantity

(datas, n, k)

<< endl;

system

("pause");

return0;

}

中位數及帶權中位數問題

資訊學競賽總是時不時與數學產生微妙的關係,中位數及帶權中位數問題有時常常成為解題的關鍵,今日有時間,所以梳理一下。先從一到簡單的題看起 士兵站隊問題 在乙個劃分成網格的操場上,n個士兵散亂地站在網格點上。網格點由整數座標 x,y 表示。士兵們可以沿網格邊上 下 左 右移動一步,但在同一時刻任一網格點...

問題 G 中位數

中位數定義 一組資料按從小到大的順序依次排列,處在中間位置的乙個數 或最中間兩個資料的平均數 給出一組無序整數,求出中位數,如果求最中間兩個數的平均數,向下取整即可 不需要使用浮點數 輸入 該程式包含多組測試資料,每一組測試資料的第一行為n,代表該組測試資料報含的資料個數,1 n 10000.接著n...

問題 G 中位數

演算法筆記 4.1小節 排序 問題 g 中位數 題目描述 中位數定義 一組資料按從小到大的順序依次排列,處在中間位置的乙個數 或最中間兩個資料的平均數 給出一組無序整數,求出中位數,如果求最中間兩個數的平均數,向下取整即可 不需要使用浮點數 輸入 該程式包含多組測試資料,每一組測試資料的第一行為n,...