P1404 平均數 二分

2021-10-09 05:21:31 字數 1581 閱讀 5379

p1404 平均數(二分)

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

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define ms(a,b) memset(a,b,sizeof(a))

#define lowbit(x) x & -x

#define fi first

#define ull unsigned long long

#define se second

#define lson (rt<<1)

#define rson (rt<<1|1)

#define endl "\n"

#define bug cout<<"----acac----"<#define ios ios::sync_with_stdio(false), cin.tie(0),cout.tie(0)

using

namespace std;

const

int maxn =

1e6+10;

const

int maxm =

1.5e5+50

;const

double eps =

1e-7

;const

double inf =

0x3f3f3f3f

;const ll lnf =

0x3f3f3f3f3f3f3f3f

;const ll mod =

1e9+7;

const

double pi =

3.141592653589

;int n, m;

double a[maxn]

, sum[maxn]

;bool

check

(double x)

double mi =

1e16

;for

(int i = m; i <= n; i++

)return

false;}

intmain()

double l =

0, r =

1e9;

while

(r - l > eps)

else

}printf

("%d\n",(

int)

((r)

*1000))

;return0;

}

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得到的序列。一行乙個實數,...

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

之前做過類似的兩道題,一道是區間和的 k 小值,一道是眾數的 k 小值 那兩道統計的東西都有單調性,可以用兩個指標維護,o n 計算 但是平均數沒有單調性,不能用兩個指標去掃 但是這道題的資料範圍是 10 5 時間限制是 2.5s 統計答案時還可以再套乙個 log 如果當前列舉的平均值是 mid 的...