CQBZ 2444 帮忙
帮忙
题目描述
【题目背景】
在高考研讨会上,随着 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 帮忙相关推荐
- 大家帮忙.谢谢!..(急急急急急)
大家帮忙.谢谢!..(急急急急急) Delphi / Windows SDK/API http://www.delphi2007.net/DelphiDB/html/delphi_2006121822 ...
- 自学考试计算机实践课,自学考试的计算机实践课怎么考大神们帮帮忙
自学考试的计算机实践课怎么考大神们帮帮忙 答案:1 信息版本:手机版 解决时间 2020-04-16 20:31 已解决 2020-04-15 21:15 就是说联系自考办还是主考院校,联系哪个部门 ...
- R语言可视化斜率图、扩充图像纵横比为数据标签显示更整齐、ggrepel包来帮忙
R语言可视化斜率图.扩充图像纵横比为数据标签显示更整齐.ggrepel包来帮忙 目录
- R语言可视化散点图(scatter plot)图、为图中的部分数据点添加标签、ggrepel包来帮忙
R语言可视化散点图(scatter plot)图.为图中的部分数据点添加标签.ggrepel包来帮忙 目录
- R语言可视化散点图(scatter plot)图中的标签和数据点互相堆叠丑死了,ggrepel包来帮忙:文本标签(label)相互排斥,远离数据点,远离绘图区域的边缘。
R语言可视化散点图(scatter plot)图中的标签和数据点互相堆叠丑死了,ggrepel包来帮忙:文本标签(label)相互排斥,远离数据点,远离绘图区域的边缘. 目录
- 本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙
本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙 目录 本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙 #把服务器的大文件通过sz命令拷贝到本 ...
- matlab里1stopt,请帮忙运行下1stopt 程序?(MATLAB没有解出结果)
问题描述:4个待拟合未知参数 n,v,c,s(实际有8个,这里先能拟合好4个就很不错了),五个已测变量cno,ctan,cchl,a,cdrp,三个ODE 方程.(已经尝试用过MATLAB求解,结果不 ...
- excel按季度分类汇总_Excel数据透视不会,分类汇总来帮忙,强的不是一点,学会它,错不了...
Excel数据透视不会,分类汇总来帮忙,强的不是一点,学会它,错不了 大家办公经常要用到Excel处理数据,想要对成千上万条数据做分类汇总,则需要做数据透视表和分类汇总功能:在数据量适中即小于万条时, ...
- 程序猿,如果下次有人让你帮忙开发App,你就这样回答他
无论什么公司,只要涉及IT.程序等元素,都会有这样一类人存在.首先一点,他们会编程,并且善钻研.爱挑战.还爱玩儿游戏外加茶水咖啡! 平时他们可以工作到很晚,一到周末也可以呼呼睡到自然醒.在外界看来,他 ...
最新文章
- c#获取txt,word,excel文档内容方法
- 如何通过VC的 CHttpFile 抓取网页内容
- linux安装mysql后如何连接_Linux安装mysql后开启远程连接(记录相关命令)
- C#算法设计查找篇之05-二叉树查找
- DBA的宿命(困兽之斗)
- 【高并发】JUC中原子类介绍
- wampserver 调试 php,phpstrom+wampserver+xdebug配置
- 解决Python查询Mysql中文乱码问题
- Oracle常见的Hint(二)
- 被黑心商家坑了N次,探究抽奖背后的秘密 —— H5转盘小游戏完整实现(源码直接拿走)
- 网络编程入门(代码很详细)
- php连接phpmyadmin,怎么访问phpmyadmin
- 棋牌游戏开发制做花费,您知多少呢?
- C++控制台程序(文字小游戏)
- 计算机二级要学的函数有哪些,计算机二级ms office中excel中必考函数有哪些?
- 电脑耳机插入外放解决办法
- Linux快速查看文件内容中包含的字符
- 能长期做到以下32点的程序员,达到月薪30K往上,不太难:
- Qt程序打包成安装包exe
- centos7 moloch安装及优化
热门文章
- 使用火星文“90后”的心灵史
- //编写程序,输入一个四位数整数如5678,求出它的各位数之和,并在屏幕上解出。
- python的try和except用法_Python异常处理中try,except用法?
- evaluate函数在python_Pandas探索之高性能函数eval和query解析
- bat脚本 自动锁屏加熄屏 准点下班
- linux进程存放 proc,Linux系统下proc目录详解
- 推荐一个高仿微信的项目 有点屌!!
- Opencv 基本操作五 各种连通域处理方法
- Android学习笔记——广播机制
- @HystrixCommand使用