cf round 898 (div.4) E

建造水族馆

题目描述

你喜欢鱼,所以你决定建造一个水族馆。你有一块由 n 根柱子组成的珊瑚,其中 i 根柱子高 ai 个单位。之后,你将在珊瑚周围建造一个水族箱,具体如下:

  • 选择一个整数 h --水箱的高度。在水箱两侧建造高度为 h 的墙壁。
  • 然后,在水箱中注满水,使每一列的高度都是 h ,珊瑚的高度超过 h 这一列就不能注水

例如, a=[3,1,2,4,6,2,5] ,高度为 h=4 ,最终总共需要使用 w=8 个单位的水,如图所示。

你最多可以用 x 个单位的水来装满水箱,但你想尽可能建造最大的水箱。你能选择的 h 的最大值 是多少?

输入

第一行包含一个整数 t( 1 <= t <= 10 4 ) - 测试用例数。

每个测试用例的第一行包含两个正整数 nx( 1 <= n <= 2 * 105 ; 1 <= x <= 109 )--珊瑚的列数和最大水量。

每个测试用例的第二行包含 n 个空格分隔的整数 ai ( 1 <= a1 <= 109; 1 <= x <= 109 )。( 1 <= ai <= 109) - 珊瑚的高度。

所有测试用例中 n 的总和不超过 2 * 105

输出

对于每个测试用例,输出一个正整数 h ( h >= 1 ) - 水箱的最大高度,因此最多需要 x 个单位的水才能装满水箱。

我们已经证明,在这些限制条件下, h 这个值总是存在的。

测试样例

输入

5
7 9
3 1 2 4 6 2 5
3 10
1 1 1
4 1
1 4 3 4
6 1984
2 6 5 9 1 8
1 1000000000
1

输出

4
4
2
335
1000000001

样例解释

第一个测试案例如语句所示。在 h=4 的情况下,我们需要 8 单位的水,但如果将 h 增加到 5 ,我们需要13 单位的水,这比 x=9 多。所以 h=4 是最佳方案。

在第二个测试案例中,我们可以选择 h=4 ,并在每列中添加 3 个单位,总共使用 9 个单位的水。可以证明这是最佳方案。

在第三个测试案例中,我们可以选择 h=2 ,并使用所有的水,因此这是最优方案。

易错

上边界是珊瑚最大高度和最大水量高度的总和,并非只是最大水量的高度,所以r初始化为2e9 + 10,而不是1e9 + 10

  • 样例5 则说明了这一点,只有一个珊瑚,结果就是最大水量和珊瑚高度加在一起

代码

#include <iostream>const int N = 2e5 + 10;
long long a[N];
using namespace std;int main()
{int t; cin >> t;while(t--){int n, x;long long max = 0;cin >> n >> x;for(int i = 0; i < n; i++) cin >> a[i];long long l = 0, r = 2e9 + 10;while(l < r){long long mid = l + r + 1 >> 1;long long ans = 0;bool goal = true;for(int i = 0; i < n; i++){if(a[i] < mid) ans += mid - a[i];if(x < ans){r = mid - 1, goal = false;    //若不满足条件,则说明h过高,要降低h;所以要在左边寻找,当前的mid不满足条件break;}}if(goal) l = mid;}cout << l << endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832222.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【日记】居然把今天的应酬逃掉了(668 字)

正文今天副行长回来了。本来以为今晚又要应酬,结果跑掉了。嘿嘿。有一个企业的董事长听说他回来了,所以嚷嚷着要请客。而客户请吃饭的对象又只有客户经理,所以我和柜面主管两个人就溜了。办公室的人也没去。不过明天是全行内部性质的,估计溜不了了。能逃一次是一次吧,嘿嘿…

字节豆包发布新模型,AI 一句话 P 图;Google 正式推出 Vids,简单提示即可生成视频演示丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的会议」,但内容仅代表编辑的…

解决DDD最大难题-如何划分领域

https://www.cnblogs.com/Can-daydayup/p/18528659前言 在.NET开发中,为了准确统计对应方法的执行时间,我们最常用的方式是手动使用 Stopwatch 来显式编写计时逻辑,但是假如你需要大量的使用 Stopwatch 来进行耗时统计的话不利于保持代码的整洁和增加代码的维护成本。项目介…

【VMware by Broadcom】新闻:VMware Workstation 和 Fusion 产品商业使用免费。

VMware Workstation Pro 和 VMware Fusion Pro 是 VMware Desktop Hypervisor 产品,允许用户在 Windows、Linux 或 Mac 计算机上运行虚拟机、容器和 Kubernetes 集群。我相信绝大部分人使用 VMware 的产品都是从这里开始的,我也不例外。前段时间,VMware 宣布将这两款产品永久…

Qt - 信号与槽的第五个参数

connent函数第五个参数的作用 connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) 第五个参数代表槽函数在哪个线程中执行 :自动连接(Qt::AutoConnection),默认的连接方式,如…

团队作业4——项目冲刺

团队作业4——项目冲刺这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 <作业要求>这个作业的目标 修改完善需求规格说明书、系统设计、Alpha任务分配计划、测试计划GitHub 链接 https://github.com/tangliweiwww/ChatGpt🍟一、团队 1.团队名称:Eleganc…

Maven打包项目的精准指定——流程管理

作用Maven不仅可以进行依赖管理的自动化,还可以自动化实现编译,打包,发布,等,也被成为构建流程 生命周期(lifecycle) 构成Maven生命周期本身可以看做一个集合,在这个集合中包含了一系列阶段(phase)。也就是说Maven的生命周期由一系列阶段(phase)构成但是话又说回来…

如何正确导入mapstruct,同时避免编译时mapstruct与lombok冲突

本文介绍编译时产生的冲突,导包时期产生的冲突请劳驾查找其他解决方法一般情况下只需要按照官网的导入即可,但如果同时使用了lombok,则需要小心。详细信息可以查看官网文档:MapStruct 1.5.5.Final 集成lombok注意:在编译测试的时候,一定先清理再编译。这样可以解决80%的报…

施耐德UNITY下使用ST编程计算最近一小时的均值

昨晚学习练习了ST语言做最近60秒的分钟均值,今天继续做最近一小时的均值,1秒采集一次数据。在昨晚程序上增加功能,新建一个导出的功能块类型Average_Hour,定义下面的变量:旗下新建一个程序段Average_Hour,使用ST编程 Minute1:=BCD_TO_INT(%SW51);Minute:=mod_int(Minute1…

HyperWorks使用六面体和三棱柱单元进行实体网格剖分

本节将演示如何使用 solid map 功能对一个复杂的几何实体进行网格剖分。剖分的思路是:首先对该实体进行适当的切割,以使其各个部分均处于 mappable 的状态;然后分别对各个子块进行 solid map 剖分。事实上,针对同一个几何实体,可能有多种分块方案。究竟哪种方案能获得更高…

SQLSever将csv文件中的数据导入数据库中的某个表中的操作以及可能会出现的报错

注:导入数据前,检查一下数据类型是否与数据库中的数据类型相匹配 第一种方法: 首先打开SQLSever数据库,右击你的数据库找到任务后点开导入平面文件,如图 在弹开的窗口中点击下一步 接下来 填写完后点击下一步,跳转到预览数据的页面,会显示出表中的前20条数据,在检查没有…

云消息队列 Kafka 版全面升级:经济、弹性、稳定,成本比自建最多降低 82%

本文整理于 2024 年云栖大会阿里云智能集团产品专家张凤婷带来的主题演讲《云消息队列 Kafka 版全面升级:经济、弹性、稳定》作者:娜米 本文整理于 2024 年云栖大会阿里云智能集团产品专家张凤婷带来的主题演讲《云消息队列 Kafka 版全面升级:经济、弹性、稳定》 云原生消息…