题干:

农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头。

约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。

围起区域内至少需要包含 F 块地,其中 F 会在输入中给出。

在给定条件下,计算围起区域内每块地包含的牛的数量的平均值可能的最大值是多少。
1≤N≤100000

思路:

因为要求的是平均值最大,也就是合最大,可以用前缀和快速求出。
但因为求得是至少f块地的平均值最大,具体的地的数量未知,所以普通暴力无从下手。
考虑到牛的总最大数量是2∗108{2*10}^82∗108,然后求得又是平均值,所以我们可以直接二分枚举平均值,然后通过与最大部分和进行比较,得到范围。
这里在算前缀和的时候先减去ave,可以使数据变小,方便使用。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <map>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int inf= 1e6;
int n,m,t[100010];
double s[100010];
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&t[i]);}double r=inf,l=0;while((r-l)>0.0001){double mid=(r+l)/2;for(int i=1;i<=n;i++)s[i]=s[i-1]+(double)t[i]-mid;double temp=inf,ans=-inf;for(int i=m;i<=n;i++){temp=min(temp,s[i-m]);ans=max(ans,s[i]-temp);}//printf("%lf %lf\n",l,r);if(ans>=0)l=mid;elser=mid;}// printf("%lf %lf\n",s[0],s[5]);printf("%d\n",(int)(r*1000));return 0;
}

AcWing 102. 最佳牛围栏(二分、前缀和)相关推荐

  1. 《算法竞赛进阶指南》打卡-基本算法-AcWing 102. 最佳牛围栏:浮点数二分、前缀和、双指针

    文章目录 题目 题解 题目 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头. 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内 ...

  2. AcWing 102. 最佳牛围栏

    题目 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于1头,也不会超过2000头. 约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达 ...

  3. 102. 最佳牛围栏【二分 / 思维 不错】

    题目的意思就是说,选一个大于等于F的窗口使其平均值最大. 那么求去掉平均值后的前缀和. 故如果存在一个大于等于F的区间使得 s[r]-s[l-1]>=0 说明就是存在的 #include< ...

  4. 102 best牛围栏(枚举、实数二分)

    1. 问题描述: 农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头.约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的 ...

  5. C. Keshi Is Throwing a Party(二分答案),最/佳牛围栏,average。

    题目链接 题意: 一共n个人,第 i 个人的财富度为 i,每个人有两个属性 ai 和 bi,分别表示最多能够容忍的比自己富和比自己穷的人数. 问,最多能够选多少人,使得所有人的要求都可以满足. 思路: ...

  6. P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希)

    P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold(加强版)(贪心+hash哈希) 洛谷上这道水题丧心病狂地把数据范围加到了500000 普通的做法肯定A不了了, ...

  7. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★

    P1083 借教室 标记永久化线段树 很典型的区间修改问题,先输入赋值建树(这就是最典型的线段树呀,别忘了),然后修改 这里问的是是否有足够的空教室,所以线段树中 min 代表的是当前区间内最小的剩余 ...

  8. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  9. 【实数二分/前缀和维护】Best Cow Fences

    Poj 2018 Best Cow Fences 实数二分+前缀和维护 调了一晚上, 但发现没什么注意事项orz 无输出只因eps定义成了int型QAQ哭唧唧 #include<cstdio&g ...

最新文章

  1. 关于LDD3 setconsole.c Alesssandro Rubini 的邮件回复
  2. torchvision 笔记:transforms.Compose()
  3. 重写toString()方法(Java篇)
  4. 【Python】元组和列表相关知识总结
  5. 网友爆料乘顺风车被司机拿刀砍伤:或面临截肢危险...
  6. “弃用 Google AMP!”
  7. 福利 | 廖雪峰官方Python教程,拿走不谢!
  8. location.host与location.hostname和跨浏览器的兼容性?
  9. python 矩阵点乘_Python之Numpy库基础——矩阵运算
  10. 数据压缩算法—LZ77 vs LZ78
  11. Augustus:真核生物基因结构预测软件-安装篇
  12. AI大佬怼怼怼的背后,究竟暗藏哪些玄机?
  13. 阅读论文《MOJITALK: Generating Emotional Responses at Scale》——ACL2018
  14. Region Proposal by Guided Anchoring 论文笔记
  15. 生活-女生的正确生活方式
  16. [FROM WOJ]#4317 谈笑风生
  17. 【已解决】python 使用xlrd,xlwt 修改execl单元格的背景色
  18. 基于Vue的微信公众号开发及选型研究
  19. 无线传感网学习笔记(8)—— DSDV路由协议 和 AODV路由协议
  20. 5000 字带你快速入门 Apache Kylin

热门文章

  1. 阿里元境携手西安博物院共创文旅元宇宙未来
  2. 关于潜意识的简单摘要
  3. 【小Y学算法】⚡️每日LeetCode打卡⚡️——26.相同的树
  4. oracle11g安装ui没反应,linux安装Oracle 11g常见问题
  5. 如何用arduino去检测声音大小?
  6. 拉取centos7的docker镜像。centos7 docker镜像包
  7. 《弃子长安》第十二章 湖底石牢
  8. 吴恩达机器学习--线性回归
  9. Ubuntu 开机自动亮度调整
  10. Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)