題意:給乙個長度為n的序列,選取一段大於等於k的子串行,求可能子串行的最大平均值。
思路:首先答案是可以二分的,每次二分去判斷是否有可行解。
然後就是怎麼寫二分的check了,區間的平均數大於當前所要判斷的平均值等價於區間每個數減去平均值後區間和大於0,然後寫個雙指標,維護前序最小的字首。
int n, len;
int a[n]
;double sum[n]
;bool
check
(double now)
return
false;}
intmain()
cout <<
(int
)(r *
1000
)<< endl;
return0;
}
acwing102 最佳牛圍欄
傳送門 二分答案,check函式主要方法就是,把所有的a i 先減去x,如果區間和是大於等於0的,也就是說這個區間的平均數大於x,從f開始,記錄前面的最小值,然後檢視是否存在答案。include using namespace std typedef long long ll define eps ...
最佳牛圍欄
戳我進原題 題意 給定乙個長度為n nn的序列a aa,以及乙個長度len lenle n。問在這個序列a aa中,可以找到的長度至少為len lenle n的連續子串行的最大平均值為多少。資料範圍 1 n 105 1 leq n leq 10 5 1 n 10 5題解 二分答案。每次二分的答案為m...
最佳牛圍欄 題解
題目描述 農夫約翰的農場由 n 塊田地組成,每塊地里都有一定數量的牛,其數量不會少於1頭,也不會超過2000頭。約翰希望用圍欄將一部分連續的田地圍起來,並使得圍起來的區域內每塊地包含的牛的數量的平均值達到最大。圍起區域內至少需要包含 f 塊地,其中 f 會在輸入中給出。在給定條件下,計算圍起區域內每...