聯賽模擬測試5 平均數 二分答案 逆序對

2022-01-10 17:00:46 字數 841 閱讀 4409

之前做過類似的兩道題,一道是區間和的\(k\)小值,一道是眾數的\(k\)小值

那兩道統計的東西都有單調性,可以用兩個指標維護,\(o(n)\)計算

但是平均數沒有單調性,不能用兩個指標去掃

但是這道題的資料範圍是 \(10^5\),時間限制是\(2.5s\)

統計答案時還可以再套乙個\(log\)

如果當前列舉的平均值是\(mid\)的話

我們只需要找出所有\(\frac \leq mid\)的數對即可

我們把分母乘過去,就變成了\(sum[i]-mid \times i \geq sum[j]-mid \times j\)

可以看成區間求逆序對

用樹狀陣列做需要離散化,用歸併排序比較方便

#include#include#includetypedef double db;

const int maxn=1e6+5;

const db eps=1e-6;

int n,a[maxn];

long long sum[maxn],m,js;

db b[maxn],c[maxn];

void msort(int l,int r)

int main()

for(int i=1;i<=n;i++)

double l=-1e9,r=1e9,mids;

while(r-l>eps)

printf("%.4f\n",mids);

return 0;

}

P1404 平均數 二分

p1404 平均數 二分 這是乙個很常見的二分題目可能題目正解不是二分是單調佇列,而這題呢 我之前一直被幾組陣列卡到懷疑人生,01數規劃嘛就是讓a i mid,然後加起來如果 0那麼就滿足條件,然後我就想著長度為m的一定是最大的,但是資料教我做人,等下看 就知道了。include include i...

JZOJ4256 平均數 二分

給出包含乙個n n個整數的陣列a a。找出一段長度至少為m m的連續序列,最大化它的平均值。很明顯這道題的答案滿足單調性。若可以找出一段區間的平均值超過k k,那麼必然可以找到一段區間的平均值超過k 1 k 1。那麼可以考慮二分答案。設二分的答案為ans ans若 ij a i j i ans j ...

平均數 題解 二分 求逆序對

有一天,小a得到了乙個長度為n的序列。他把這個序列的所有連續子串行都列了出來,並對每乙個子串行都求了其平均值,然後他把這些平均值寫在紙上,並對它們進行排序,最後他報出了第k小的平均值。你要做的就是模仿他的過程。第一行兩個整數n,k,意義如題中所述。第二行n個正整數,即為小a得到的序列。一行乙個實數,...