传送门:http://poj.org/problem?id=2018;

大概题意是求一个正整数数列 A 的平均数最大 长度不小于 L 的子段

我们可以二分答案 判定是否有一个长度不小于L的子段 平均数不小于二分值

我们把数列数减去二分的答案 则判断是否一个长度不小于L的子段 和大于0

众所周知我们可以用两个前缀和的值相减来表示

我们只用对于每个i记录在i-L前最小的sum就可以了

贴代码(同时注意一些实数域二分的技巧就好)

#include<iostream>
#include<cstdio>
using namespace std;
long long n,L;
double a[1000001],b[1000001],sum[1000001];
int main()
{
scanf("%lld%lld",&n,&L);
for(long long i = 1;i <= n;i++)
scanf("%lf",&a[i]);
double eps = 1e-5;
double l = -1e6,r = 1e6;
while (r - l > eps)
{
double mid = (l + r) / 2;
for(long long i = 1; i <= n; i++) b[i] = a[i] - mid;
for(long long i = 1; i <= n; i++) sum[i] = sum[i - 1] + b[i];
double ans = -1e10;
double min_val = 1e10;
for(long long i = L; i <= n ; i++)
{
min_val = min(min_val, sum[i - L]);
ans = max(ans, sum[i] - min_val);
}
if(ans >= 0) l = mid;
else
r = mid;
}
cout << int (r * 1000) << endl;
}

最新文章

  1. AngularJS +HTML Demo
  2. dedecms 图片集上传时提示错误信息“(FILEID:1|2|3..)“的解决
  3. Ruby on Rails框架开发学习
  4. Oracle 11g EM安全证书问题无法访问的解决办法
  5. Java 编程要点之并发(Concurrency)详解
  6. Android 添加子视图(addView和setView)
  7. Hadoop--Hadoop的机架感知
  8. eclipes快捷键
  9. Node js redis
  10. 社团的CTF逆向题WriteUp
  11. 【题解】 bzoj3693: 圆桌会议 (线段树+霍尔定理)
  12. [leetcode]94. Binary Tree Inorder Traversal二叉树中序遍历
  13. mac OS X下Java项目环境搭建+IntelliJ IDEA Jrebel插件安装与破解+Office 2016破解版安装
  14. Springframework和Hibernate版本对应关系
  15. Debug和汇编编译器masm对指令的不同处理
  16. java Exception 出错的栈信息打印到日志中 打印堆栈信息
  17. Java中float和double转换的问题
  18. Python 文件IO
  19. ubuntu 12.04 LTS server 中文乱码【转】
  20. Kali-linux使用假冒令牌

热门文章

  1. MC-BE基岩版服务器搭建与日常维护
  2. 【Java虚拟机7】ClassLoader源码文档翻译
  3. cassandra表中主键的类型
  4. 【UE4 C++】打印字符串与输出日志
  5. 【UE4 设计模式】抽象工厂模式 Abstract Factory Pattern
  6. Jmeter之BeanShell 断言
  7. 第1次 Beta Scrum Meeting
  8. uvm Register Access Methods(16)
  9. 穿点最多的直线 牛客网 程序员面试金典 C++
  10. popStar手机游戏机机对战程序