当前位置:网站首页>102. 最佳牛围栏
102. 最佳牛围栏
2022-08-03 16:47:00 【Hunter_Kevin】
题目
农夫约翰的农场由 N 块田地组成,每块地里都有一定数量的牛,其数量不会少于 1 头,也不会超过 2000 头。
约翰希望用围栏将一部分连续的田地围起来,并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。
围起区域内至少需要包含 F 块地,其中 F 会在输入中给出。
在给定条件下,计算围起区域内每块地包含的牛的数量的平均值可能的最大值是多少。
输入格式
第一行输入整数 N 和 F,数据间用空格隔开。
接下来 N 行,每行输入一个整数,第 i+1 行输入的整数代表第 i 片区域内包含的牛的数目。
输出格式
输出一个整数,表示平均值的最大值乘以 1000 再 向下取整 之后得到的结果。
数据范围
1≤N≤100000
1≤F≤N
输入样例:
10 6
6
4
2
10
3
8
5
9
4
1
输出样例:
6500
代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int num[N];
double sum[N];
int n, m;
bool check(double avg){
// 计算减掉平均值的前缀和
// 针对平均值avg计算出的前缀和
for(int i = 1; i <= n; i++) sum[i] = sum[i-1] + num[i] - avg;
double mmin = 0;//记录i位置前的最小值
// sum[j]-sum[i]即i~j的总和,如果sum[j]-sum[i]>=0,则说明长度为j-i的序列的总和>=0
// 即长度至少为m的序列减去平均值avg之后的和大于0,如果有满足此条件的j和i,则说明平均值avg是满足条件的
for(int i = 0, j = m; j <= n; j++, i++){
mmin = min(mmin, sum[i]);
if(sum[j] - mmin >= 0) return true;
}
return false;
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; i++)scanf("%d", &num[i]);
// 对给定的范围进行浮点数二分查找结果
double l = 1, r = 2000;
while(r - l > 1e-5){
double mid = (l+r)/2;
if(check(mid))l = mid;
else r = mid;
}
printf("%d\n",int(r*1000));
return 0;
}
边栏推荐
- 组件通信-父传子组件通信
- yolov5s用自己的数据集进行训练模型
- Big guys.Use flink-cdc-sqlserver version 2.2.0 to read sqlserver2008R
- C专家编程 第2章 这不是Bug,而是语言特性 2.2 多做之过
- MySQL窗口函数 OVER()函数介绍
- EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
- 【Metaverse系列一】元宇宙的奥秘
- Kubernetes 笔记 / 生产环境
- 怎么在opengauss中进行测试自己添加的新函数的性能(循环n次的运行时间)?
- Kubernetes 笔记 / 任务 / 管理集群 / 用 kubeadm 管理集群 / 配置一个 cgroup 驱动
猜你喜欢

EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成

protobuf 中数据编码规则

“LaMDA 存在种族歧视,谷歌的 AI 伦理不过是‘遮羞布’!”

使用 PowerShell 将 Windows 转发事件导入 SQL Server

leetcode:189. 轮转数组

Understand the recommendation system in one article: Outline 02: The link of the recommendation system, from recalling rough sorting, to fine sorting, to rearranging, and finally showing the recommend

中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招

蒋松廷 荣获第六季完美童模全球总决赛 全球总冠军

SQL中对 datetime 类型操作

Description of the functional scenario of "collective storage and general governance" in the data center
随机推荐
关于oracle表空间在线碎片整理
[Unity Getting Started Plan] Basic Concepts (7) - Input Manager & Input Class
EasyExcel实现动态列解析和存表
【AppCube】零代码小课堂开课啦
测试测试测试
php之相似文章标题similar_text()函数使用
【目标检测】Focal Loss for Dense Object Detection
Excuse me this hologres dimension table is cached?How to Finished
LeetCode·899.有序队列·最小表示法
leetcode:202. 快乐数
C专家编程 第3章 分析C语言的声明 3.4 通过图标分析C语言的声明
C专家编程 第3章 分析C语言的声明 3.2 声明是如何形成的
高效的组织信息共享知识库是一种宝贵的资源
数据中台“集存通用治”功能场景说明
yolov5s用自己的数据集进行训练模型
掌握Redis的Sentinel哨兵原理,可助你拿到25k的offer
C语言01、数据类型、变量常量、字符串、转义字符、注释
Kubernetes 笔记 / 入门 / 生产环境 / 容器运行时
uniapp的webview滑动缩放
中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招