帮忙

题目描述
【题目背景】
在高考研讨会上,随着 z 同学对 zn 了解的深入,发现她不仅是一个善良的女孩子,
还 是一个很勤劳的女生,哇塞,这样棒的女生在 21世纪真是太难遇到了,要是可
以娶到这样的 女生,小 z 陷入了无限的 yy 中
高考研讨会进入了尾声,校长一声令下,搬椅子喽~~~~,只见平时道貌岸然的那
些所谓的好学生们一听要干活全跑了,shit~~!!操场上只剩 zn 与 z 同学了,面对成千
上万的椅子, 肿么办~~小 z 突然意识到现在正是奥赛课啊,于是他想到了
hzoi2009 的兄弟们,果然,当小 z 跑到机房,说明来意后,hzoi2009 的兄弟们(还
有个妹子)当时貌似在考试,但都没有半点 迟疑,立马跟随小 z 下楼(小 z 一直
把这件事记在心中,现在回想起来还有点小感动哈)
【题目描述】
面对成千上万的椅子,当然不能用蛮力一个一个的搬了,校长大人提供了一种搬运
车。 椅子们是排成一排的,搬运车一次必须搬不少于 k 个的连续的椅子,消耗的
机油为所搬椅子重量的平均值(总重量比椅子个数)。小 z 想知道搬一次最多能耗
费多少机油,好向校长报销机油费
输入
第一行:整数 n(代表椅子数)与 k(一次搬的最少的椅子数) 接下来 n 行,每行
一个整数 wi,代表椅子的重量
输出
搬一次可能耗费的最多的机油数 ∗ 1000(结果取整)

样例输入
Copy (如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)

10 6
6
4
2
10
3
8
5
9
4
1
样例输出
6500
提示
【数据范围】

对于30%的数据 0 < k < N ≤ 1000

对于100%的数据 0 < k < n < 100000

0 < Wi ≤ 2000

## 法一
惯用的二分平均值,根据正负判断是否可行,为正说明平均值还能更大,为负说明需要缩小

#include<cstdio>
#include<algorithm>
#define maxn 100005
using namespace std;
int n,k,a[maxn];
double s[maxn];
bool check(double d)
{for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i]-d;double Min=0;for(int i=k;i<=n;i++){if(s[i]-Min>=0) return 1;Min=min(Min,s[i-k+1]);}return 0;
}
int main()
{double l=2000005,r=-1,mid;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i]*=1000,l=min(l,1.0*a[i]),r=max(r,1.0*a[i]);while(r-l>1e-6){mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}printf("%d",int(l+1e-6));
}

## 法二
类似于最大子段和,i从k扫到n,维护中间遇到的最大的斜率,并记下那个点,
但是其实**这样的做法是有问题的**,因为就算当决策点为下凸壳,仍然无法凭借单调性得到当前点的最优解

#include<cstdio>
#include<algorithm>
using namespace std;
int n,k,a[100005];
double ans;
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i]+=a[i-1];for(int i=k,tmp=0;i<=n;i++){int j=i-k;if(1ll*(a[i]-a[j])*(i-tmp)>=1ll*(a[i]-a[tmp])*k) tmp=j;//新增决策点ans=max(ans,(a[i]-a[tmp])*1000.0/(i-tmp));}printf("%d",int(ans));
}

实际上可以构造数据卡掉这种算法,比如:
7 4
10 20 40 10 5 2 50
二分答案为21400,取后5个
上面的程序为21166,取后6个

CQBZ 2444 帮忙相关推荐

  1. 大家帮忙.谢谢!..(急急急急急)

    大家帮忙.谢谢!..(急急急急急) Delphi / Windows SDK/API http://www.delphi2007.net/DelphiDB/html/delphi_2006121822 ...

  2. 自学考试计算机实践课,自学考试的计算机实践课怎么考大神们帮帮忙

    自学考试的计算机实践课怎么考大神们帮帮忙 答案:1  信息版本:手机版 解决时间 2020-04-16 20:31 已解决 2020-04-15 21:15 就是说联系自考办还是主考院校,联系哪个部门 ...

  3. R语言可视化斜率图、扩充图像纵横比为数据标签显示更整齐、ggrepel包来帮忙

    R语言可视化斜率图.扩充图像纵横比为数据标签显示更整齐.ggrepel包来帮忙 目录

  4. R语言可视化散点图(scatter plot)图、为图中的部分数据点添加标签、ggrepel包来帮忙

    R语言可视化散点图(scatter plot)图.为图中的部分数据点添加标签.ggrepel包来帮忙 目录

  5. R语言可视化散点图(scatter plot)图中的标签和数据点互相堆叠丑死了,ggrepel包来帮忙:文本标签(label)相互排斥,远离数据点,远离绘图区域的边缘。

    R语言可视化散点图(scatter plot)图中的标签和数据点互相堆叠丑死了,ggrepel包来帮忙:文本标签(label)相互排斥,远离数据点,远离绘图区域的边缘. 目录

  6. 本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙

    本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙 目录 本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙 #把服务器的大文件通过sz命令拷贝到本 ...

  7. matlab里1stopt,请帮忙运行下1stopt 程序?(MATLAB没有解出结果)

    问题描述:4个待拟合未知参数 n,v,c,s(实际有8个,这里先能拟合好4个就很不错了),五个已测变量cno,ctan,cchl,a,cdrp,三个ODE 方程.(已经尝试用过MATLAB求解,结果不 ...

  8. excel按季度分类汇总_Excel数据透视不会,分类汇总来帮忙,强的不是一点,学会它,错不了...

    Excel数据透视不会,分类汇总来帮忙,强的不是一点,学会它,错不了 大家办公经常要用到Excel处理数据,想要对成千上万条数据做分类汇总,则需要做数据透视表和分类汇总功能:在数据量适中即小于万条时, ...

  9. 程序猿,如果下次有人让你帮忙开发App,你就这样回答他

    无论什么公司,只要涉及IT.程序等元素,都会有这样一类人存在.首先一点,他们会编程,并且善钻研.爱挑战.还爱玩儿游戏外加茶水咖啡! 平时他们可以工作到很晚,一到周末也可以呼呼睡到自然醒.在外界看来,他 ...

最新文章

  1. c#获取txt,word,excel文档内容方法
  2. 如何通过VC的 CHttpFile 抓取网页内容
  3. linux安装mysql后如何连接_Linux安装mysql后开启远程连接(记录相关命令)
  4. C#算法设计查找篇之05-二叉树查找
  5. DBA的宿命(困兽之斗)
  6. 【高并发】JUC中原子类介绍
  7. wampserver 调试 php,phpstrom+wampserver+xdebug配置
  8. 解决Python查询Mysql中文乱码问题
  9. Oracle常见的Hint(二)
  10. 被黑心商家坑了N次,探究抽奖背后的秘密 —— H5转盘小游戏完整实现(源码直接拿走)
  11. 网络编程入门(代码很详细)
  12. php连接phpmyadmin,怎么访问phpmyadmin
  13. 棋牌游戏开发制做花费,您知多少呢?
  14. C++控制台程序(文字小游戏)
  15. 计算机二级要学的函数有哪些,计算机二级ms office中excel中必考函数有哪些?
  16. 电脑耳机插入外放解决办法
  17. Linux快速查看文件内容中包含的字符
  18. 能长期做到以下32点的程序员,达到月薪30K往上,不太难:
  19. Qt程序打包成安装包exe
  20. centos7 moloch安装及优化

热门文章

  1. 使用火星文“90后”的心灵史
  2. //编写程序,输入一个四位数整数如5678,求出它的各位数之和,并在屏幕上解出。
  3. python的try和except用法_Python异常处理中try,except用法?
  4. evaluate函数在python_Pandas探索之高性能函数eval和query解析
  5. bat脚本 自动锁屏加熄屏 准点下班
  6. linux进程存放 proc,Linux系统下proc目录详解
  7. 推荐一个高仿微信的项目 有点屌!!
  8. Opencv 基本操作五 各种连通域处理方法
  9. Android学习笔记——广播机制
  10. @HystrixCommand使用