题意

给出一个长为n的正整数序列(n<=1e5),要求选出一个非空前缀和一个非空后缀(这两段不能够加起来组成整个序列),使得这个前缀和后缀中的所有数字一起求平均数的结果最小

分析

最大/最小化平均数的题目一眼就是二分这个平均数,原序列每个数字减去平均数,转化为和大于0/和小于0的判断.求求前缀和没了.

咸鱼选手这都1A不了QAQ

#include<cstdio>
const int maxn=100005;
int a[maxn];
double sum[maxn];
double min_suffix[maxn];
int n;
bool check(double ans){
for(int i=1;i<=n;++i)sum[i]=a[i]-ans;
for(int i=2;i<=n;++i)sum[i]+=sum[i-1];
for(int i=n;i>=1;--i)min_suffix[i]=sum[n]-sum[i-1];
for(int i=n-1;i>=1;--i)if(min_suffix[i+1]<min_suffix[i])min_suffix[i]=min_suffix[i+1];
for(int i=1;i<=n-2;++i)if(sum[i]+min_suffix[i+2]<-(1e-6))return true;
return false;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%d",a+i);
double lo=0,hi=1e6;
for(int i=1;i<=50;++i){
double mid=(lo+hi)/2.0;
if(check(mid))hi=mid;
else lo=mid;
}
printf("%.3f\n",lo);
return 0;
}

最新文章

  1. ASP.NET OWIN OAuth:遇到的2个refresh token问题
  2. 在Windows中安装NodeJS的正确姿势
  3. Gradle&#39;s dependency cache may be corrupt解决方法
  4. Add more security in Visual Studio 2012
  5. Android开发之Intent略解
  6. android产品业务逻辑对app稳定影响太大
  7. ok6410的DMA裸机总结
  8. poj 1201 Intervals(差分约束)
  9. Volley使用指南第一回(来自developer.android)
  10. 轻松应对C10k问题
  11. Creating your own header file in C
  12. DOM范围
  13. Kubernetes环境下的各种调试方法
  14. 神奇的namespace使用
  15. Java开发笔记(三十)大小数BigDecimal
  16. 基于kNN的手写字体识别——《机器学习实战》笔记
  17. [leetcode]67. Add Binary 二进制加法
  18. Angular基础(六) DI
  19. svn Please execute the &#39;Cleanup&#39; command. 问题解决
  20. 自定义kafka Sink

热门文章

  1. 20145226夏艺华 Exp6 信息搜集与漏洞扫描
  2. [arc065E]Manhattan Compass[曼哈顿距离和切比雪夫距离转换]
  3. [CF1042D] Petya and Array
  4. Windows环境下php开启GD库的方法
  5. python全栈开发-前方高能-生成器和生成器表达式
  6. C、C++字符操作归总
  7. spring 属性文件加载接口---PropertySourceLoader
  8. vue关于img src动态赋值问题
  9. 【转】: 塞尔达组在GDC2017演讲的文字翻译:技术的智慧
  10. JavaScript学习笔记(二)——函数和数组