题意:找到一个连续区间,区间的长度至少大于f,现在要求这个区间的平均值最大。

题解:

二分找答案。

每次对于2分的mid值, 都把原来的区间减去mid, 然后找到一长度至少为f的区间, 他们的区间和>=0。

代码:

 #include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<iostream>
#include<cstring>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lch(x) tr[x].son[0]
#define rch(x) tr[x].son[1]
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL mod = (int)1e9+;
const int N = 1e5 + ;
int n, f;
int a[N];
LL suf[N];
bool check(int mid){
for(int i = ; i <= n; ++i)
suf[i] = suf[i-] + a[i] - mid;
LL minval = ;
for(int i = f; i <= n; ++i){
minval = min(minval, suf[i-f]);
if(suf[i] - minval >= ) return true;
}
return false;
}
int main(){
scanf("%d%d", &n, &f);
for(int i = ; i <= n; ++i)
scanf("%d", &a[i]), a[i] *= ;
int l = , r = inf;
while(l <= r){
int m = l+r >> ;
if(check(m)) l = m + ;
else r = m - ;
}
printf("%d\n", l-);
return ;
}

最新文章

  1. 时隔一年再读到the star
  2. 00Linux学习及角色定义
  3. VB.NET中的除法运算符 与 C#中的除法运算符
  4. hdu 4864 Task (贪心 技巧)
  5. javascript字符串基本方法
  6. Netfilter-packet-flow.svg
  7. Tyvj-TOM的无穷序列
  8. Redis+Restful 构造序列号和压力测试【原创】
  9. ChartControl设置坐标轴范围
  10. mvc模式的理解
  11. abap test seam 和 TEST-INJECTION
  12. 微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅
  13. Ubuntu下安装tomcat
  14. ORACLE——存储过程
  15. js计算两个日期相差天数
  16. source tree图谱
  17. JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)
  18. |和||、&amp;&amp;和&amp;
  19. H264编码profile &amp; level控制
  20. jvm执行流程

热门文章

  1. Drools规则引擎-如果判断某个对象中的集合是否包含指定的值
  2. 【iOS】Xcode 离线文档
  3. java volatile关键字作用及使用场景
  4. python创建虚拟环境(Windows)
  5. Netty源码解析---服务端启动
  6. Java集合系列(四):HashMap、Hashtable、LinkedHashMap、TreeMap的使用方法及区别
  7. WEB基础(一)--JSP的9个内置对象
  8. Bootstrap笔记--快速入门
  9. R语言中如何找出在两个数据框中完全相同的行(How to find common rows between two dataframe in R?)
  10. 报error:getNetworkFromStore for nid failed while trying to build sandbox for cleanup: network