最大均值

ybtoj 二分-1-3

题目大意

给出一个序列,让你求一个长度不小于m的子序列,使其平均值最大

输入样例

10 6
6
4
2
10
3
8
5
9
4
1

输出样例

6500

数据范围

1⩽L⩽N⩽1051\leqslant L \leqslant N \leqslant 10^51⩽L⩽N⩽105
Ai⩽2000A_i\leqslant 2000Ai​⩽2000

解题思路

二分平均值,然后用数组存下所有数对当前平均值的贡献
然后判断是否有长度大于L的序列贡献值大于0

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 100010
#define max(x, y) (x)>(y)?(x):(y)
#define min(x, y) (x)<(y)?(x):(y)
using namespace std;
ll n, m;
double l, r, mid, a[N], sum[N];
bool check(double g)
{for (int i = 1; i <= n; ++i)sum[i] = sum[i - 1] + a[i] - g;double ans = -2000.0 * N, minn = 2000.0 * N;for (int i = m; i <= n; ++i)//求长度不小于L的序列贡献值最大是多少{minn = min(minn, sum[i - m]);ans = max(ans, sum[i] - minn);}return ans >= 0;//大于0
}
int main()
{scanf("%lld%lld", &n, &m);for (int i = 1; i <= n; ++i)scanf("%lf", &a[i]);l = 0;r = 2001.0;while(l + 1e-5< r)//二分{mid = (l + r) / 2;if (check(mid)) l = mid;else r = mid;}printf("%lld", (ll)(r*1000));return 0;
}

【二分】最大均值(ybtoj 二分-1-3)相关推荐

  1. spark Bisecting k-means(二分K均值算法)

    Bisecting k-means(二分K均值算法) 二分k均值(bisecting k-means)是一种层次聚类方法,算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二.之后选择能最大程 ...

  2. 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  3. k均值算法 二分k均值算法_如何获得K均值算法面试问题

    k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...

  4. 【二分】防具布置/秦腾与教学评估(ybtoj 二分-1-2/jzoj 1253/luogu 4403)

    正题 ybtoj 二分-1-2 jzoj 1253 luogu 4403 题目大意 给出n组数:si,ei,dis_i,e_i,d_isi​,ei​,di​ 对于每组数据,表示在sis_isi​加1, ...

  5. 【二分】数列分段(ybtoj 二分-1-1)

    数列分段 ybtoj 二分-1-1 题目大意 给出一个序列A,让你把它分成m段,使每段和最大值最小 输入样例 5 3 4 2 4 5 1 输出样例 6 数据范围 1⩽M⩽N⩽1051\leqslant ...

  6. k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

    k均值算法 二分k均值算法 Have you ever seen a Caribbean reef? Well if you haven't, prepare yourself. 您见过加勒比礁吗? ...

  7. php+求二分查找递归算法,PHP二分查找(递归和循环)

    二分查找可以通过递归和循环来实现, 思路如下: 将要查找的数和中间数进行比较, 如果相等,则表示找到,返回下标 如果要查找的数小于中间这个数,则说明要查找的数分布在数组左边,修改right边界,使其等 ...

  8. c语言 二分查找法 及二分查找法的时间复杂度。

    二分查找法是用来查找数组中指定的那个元素.使用二分查找的前提是数组是有序的.(这里我们假设是升序) 在现实生活中,我们要猜一个区间内的数字,比如1~10之间,我们通常会猜它的中间数5,再根据要猜的数和 ...

  9. 二分思想(二分查找,整数二分,浮点数二分)

    二分思想之二分查找,整数二分,浮点数二分 二分思想

最新文章

  1. 《深入理解计算机系统》读书笔记六:整数表示
  2. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
  3. Technocup 2020 - Elimination Round 2 E. Rock Is Push dp
  4. Ipimage 转mat
  5. TimeQuest就一定要搞定——时序分析基本公式
  6. JPA用TABLE生成主键
  7. java拦截器_Java拦截器
  8. 【caffe】Layer解读之:Date
  9. 千峰前端html个人笔记
  10. 去除winrar的弹窗广告方法(亲测有效)
  11. linux内存硬件检测工具下载,极品内存检测工具(Memtest86)
  12. 基于M0 MCU的无感FOC航模电机控制
  13. 商业分析的职业路线-在数据科学世界里规划你的下一个角色
  14. port isolate enable命令
  15. python提示takes no arguments_Python创建实例时提示错误takes no arguments,找不到什么原因?...
  16. 美世家无线点菜android,美世家无线点菜成功实现iPad mini平台应用
  17. 用d2rq转换MySQL为RDF数据
  18. DBA观点分享:大数据对传统数据库的影响
  19. PS避免图片多次放大或缩小造成的模糊问题?
  20. 弹性地基梁板法计算原理_平面弹性地基梁法,详细讲解!

热门文章

  1. apk源码查看工具_如何查看Linux命令工具的源码?
  2. qt 从文件中读出数据显示在表格中_QT中有什么控件可以实现向excel的表格显示,qt数据存储到Excel表格...
  3. java char short区别_java 彻底理解 byte char short int float long double
  4. 『软件工程6』详解软件项目管理之软件范围与估算
  5. C++ struct结构体 实现搜索二叉树(BST)
  6. Not so Mobile(二叉树递归输入同时建树){天平}
  7. 数据结构---KMP模式匹配病毒感染人的DNA检测
  8. E. Party Company(树上问题)
  9. 【bzoj2555】Substring【后缀平衡树入门】
  10. [SDOI2014]旅行