Description

Sample Input


4 1
1 2 3 4

Sample Output


4.000000
题意:给你n个数,让你找到长度大于等于k的连续串的最大平均值。
思路:我们可以二分答案,然后先把每一个数减去二分的平均值,记录前缀和sum[i],用从k开始循环,每次往后找一个数,都减去0~i-k中的最小前缀和,看最大算出来的值是不是大于等于0,如果大于等于0就满足。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<bitset>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef long double ldb;
#define inf 99999999
#define pi acos(-1.0)
#define maxn 300050
#define MOD 1000000007
#define eps 1e-6
double a[maxn],b[maxn],sum[maxn];
int n,k;
int cal(double x)
{
int i,j;
double minx;
sum[0]=0;
for(i=1;i<=n;i++){
b[i]=a[i]-x;
sum[i]=sum[i-1]+b[i];
}
minx=0;
for(i=k;i<=n;i++){
if(sum[i]-minx>=0){
return 1;
}
minx=min(minx,sum[i-k+1]);
}
return 0; } int main()
{
int m,i,j;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=1;i<=n;i++){
scanf("%lf",&a[i]);
}
double l,r;
l=1;r=1000000;
double mid;
while(r-l>eps){
mid=(l+r)/2.0;
if(cal(mid)){
l=mid;
}
else r=mid;
}
printf("%.5f\n",l);
}
return 0;
}

最新文章

  1. PHP多维数组根据其中一个字段的值排序
  2. UiAutomator自动化测试框架介绍
  3. [转]N种内核注入DLL的思路及实现
  4. AngularJS开发指南1:AngularJS简介
  5. JSP编程-步步为营
  6. bzoj 1791: [Ioi2008]Island 岛屿
  7. 柯南君:看大数据时代下的IT架构(3)消息队列之RabbitMQ-安装、配置与监控
  8. sqlserver 使用脚本创建Sql Server代理作业
  9. 手机端仿ios的省市县3级联动脚本一
  10. Hive使用必知必会系列
  11. datagridview 查询数据库数据
  12. P1705 爱与愁过火(背包)
  13. Linux&amp;Windows中VNC协议及使用方法
  14. Node.js express获取参数有三种方法
  15. C# 面向对象零碎知识点
  16. Spring触发器触发2次问题【转】
  17. get 和post 请求的写法
  18. ngular ionic select ng-options 默认选择第一个值的写法
  19. 通过淘宝接口免费获取IP地址信息
  20. C#基础第四天-作业答案-Hashtable-list&lt;KeyValuePair&gt;泛型实现名片

热门文章

  1. 卷积神经网络学习笔记——Siamese networks(孪生神经网络)
  2. 解决Establishing SSL connection without server‘s identity verification is not recommended.
  3. 【ORA】ORA-01033,ORA-09968,ORA-01102
  4. 攻防世界—pwn—level2
  5. 屏蔽每分钟SSH尝试登录超过10次的IP
  6. let关键字:加强版的var关键字
  7. Ice系列--强大如我IceGrid
  8. Spring Validation 验证
  9. window.open()打开新窗口教程
  10. APM调用链产品对比