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 的...