Problem

Description

Input

Output

Sample Input

4 3
4 3 3
5 1 6
2 6 1
3 2 9

Sample Output

4.4286

Data Constraint

Hint

Solution

这题显然二分。
令sum[i][...]sum[i][...]表示第i行的前缀和,第i行挖h[i]h[i]层,二分答案为midmid,合法情况当且仅当

Σni=1sum[i][h[i]]Σni=1h[i]−x非负

\frac{\Sigma_{i=1}^n sum[i][h[i]]}{\Sigma_{i=1}^n h[i]}-x非负
那么我们很容易得到一条式子:

Σni=1(sum[i][h[i]]−h[i]⋅x)≥0

\Sigma_{i=1}^n (sum[i][h[i]]-h[i]·x)≥0
那么我们只要算一下

Σni=1max(sum[i][j]−jx)是否≥0(1≤j≤h)

\Sigma_{i=1}^n max(sum[i][j]-jx)是否≥0 (1≤j≤h)就OK了。
由于n,h不确定,所以二维的sum数组要改成一维。

Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#define N 100010
#define eps 0.00001
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
int i,j,n,h,tot;
double l,r,mid,x,ans,sum,mx,a1,a2,a[N],s[N];
int main()
{freopen("4809_1.in","r",stdin);scanf("%d%d",&n,&h);fo(i,1,n*h){scanf("%lf",&a[i]);sum+=a[i];s[i]=sum;if (i%h==0) sum=0;}l=0;r=1000000000;while (l+eps<r){mid=(l+r)/2;sum=0;fo(i,1,n){mx=-2147483647;fo(j,1,h)mx=max(mx,s[(i-1)*h+j]-j*mid);sum+=mx;}if (sum>=0) l=mid;else r=mid;}printf("%.4lf",l);
}

JZOJ 4809. 挖金矿相关推荐

  1. java回调函数的生命_Java车票,车站,生命周期,龟兔赛跑,同步锁,礼让,守护线程,挖金矿【诗书画唱】...

    个人理解:加同步锁等的时候,就可以让线程"按顺序排队",一个一个地抢CPU,一个抢完对应的每次有的CPU了,另一个才抢对应的每次有的CPU,解决"并发"问题等. ...

  2. 百度上线百度金矿,个人电脑也可以挖金矿

    百度金矿号称一个可以让个人电脑利用闲置网络资源赚钱的软件,这种软件近几年好几家公司都有做过尝试,迅雷,小米等互联网公司都有搞过. 这种模式有点像比特币不过之前有试过迅雷的确实不太理想,百度金矿也只是 ...

  3. 人工智能变现难?这家AI挖金矿公司已上市

    "变现"是当下阶段人工智能公司面临最重要的难题,表面看来人工智能已经在安防.医疗.教育.智能手机.汽车.金融等诸多行业纷纷落地,但这些行业实际上能产生的营收并不十分乐观.而且诸多均 ...

  4. 【动态规划模型】金矿模型理解动态规划!(精彩的故事)

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  5. 【转载】通过金矿模型介绍动态规划 (动态规划入门)

    先附上原文地址:http://www.cnblogs.com/sdjl/articles/1274312.html 通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第 ...

  6. 动态规划入门之国王的金矿

    最近学习算法,对动态规划不太了解,使用的时候照搬转移方程式,知其然不知其所以然,今天看到一篇动态规划的教程,解释得非常通俗,原文在这里[动态规划入门教程] (http://blog.csdn.net/ ...

  7. 【面试经典】求解金矿问题(动态规划初级)

    问题:有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同(情况如下图) 金矿编号 黄金储量 需要人数 1 400 5 2 500 5 3 200 3 4 300 4 5 35 ...

  8. 通过金矿模型介绍动态规划

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  9. 通过金矿模型介绍动态规划(经典入门)

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  10. 动态规划--金矿模型

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

最新文章

  1. C++内存管理与内存泄漏及其检测
  2. 想成为一名优秀的Web前端工程师,这5点你要知道
  3. asp.net 2.0下用access开发的时候要注意的问题
  4. 新生代中Eden:S1:S2为什么是8:1:1?
  5. Swing应用程序中的CDI事件可将UI与事件处理分离
  6. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)
  7. 京东商品知识图谱,约10万商品品牌,约65万品牌销售关系
  8. windows10重装后锁定其他盘_电脑重装Windows10系统步骤
  9. 用Python+PIL将多个jpg图像批量合并成一个pdf文件
  10. 运动控制器用c语言编程吗,中文可编程运动控制器
  11. SSM毕设项目国有资产管理系统3c938(java+VUE+Mybatis+Maven+Mysql)
  12. 2019年java全栈工程师学习大全
  13. 微信小程序开发入门指南一
  14. Ribbon与Hystrix
  15. 计算机老师中专教学论文,中专计算机多元化教学论文
  16. ps中常用模糊的区别
  17. Oracle中有dateadd吗,oracle dateadd的函数有哪些?
  18. HTTP协议中 POST和GET的区别
  19. NYOJ 买牛奶(水题)
  20. 新西兰 计算机 转专业,新西兰本科毕业之后怎么转专业

热门文章

  1. 运营周期爆发期是什么?
  2. 数字货币钱包 - 助记词 及 HD 钱包密钥原理
  3. 并行计算:MPI总结
  4. 局域网常见问题解决方案之你可能没有权限使用网络资源无法访问网上邻居
  5. Mysql 临时表详解(temporary table)
  6. 设计模式——工厂方法模式
  7. 接入Internet的技术有哪几种?各有什么特点?
  8. 李迟2022年4月工作生活总结
  9. 阿里云企业邮箱:密码登录
  10. 牛客多校10 Train Wreck (模拟,思维题,优先队列重载小于号的操作)