Day3-Q-修补木桶 HihoCoder1362

2024-02-06 13:30

本文主要是介绍Day3-Q-修补木桶 HihoCoder1362,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一只木桶能盛多少水,并不取决于桶壁上最高的那块木板,而恰恰取决于桶壁上最短的那块。

已知一个木桶的桶壁由N块木板组成,第i块木板的长度为Ai。

现在小Hi有一个快捷修补工具,每次可以使用修补工具将连续的不超过L块木板提高至任意高度。

已知修补工具一共可以使用M次(M*L<N),如何修补才能使最短的那块木板最高呢?

注意: 木板是环形排列的,第N-1块、第N块和第1块也被视为连续的。

Input

第1行:3个正整数,N, M, L。分别表示木板数量,修补工具使用次数,修补工具每次可以同时修补的木板数。 1≤N≤1,000,1≤L≤20,M*L<N

第2行:N个正整数,依次表示每一块木板的高度Ai,1≤Ai≤100,000,000

Output

第1行:1个整数。表示使用修补工具后,最短木块的所能达到的最高高度

Sample Input

8 2 3
8 1 9 2 3 4 7 5

Sample Output

7

Hint

第一个修补工具覆盖[2 3 4]

第二个修补工具覆盖[5 8 1]

 思路:可贪心验证+答案单调性,二分答案,验证时枚举起点即可,代码如下:

const int maxm = 100010;
const int INF = 0x7fffffff;int buf[maxm], N, M, L;bool check(int d) {int start = 0, sum;while(start < N) {sum = 0;for(int i = start; i < start + N;) {if(buf[i % N] < d) {i += L;sum++;} elsei++;}if(sum <= M)return true;start++;}return false;
}int main() {scanf("%d%d%d", &N, &M, &L);int l = INF, r = -INF, mid;for(int i = 0; i < N; ++i) {scanf("%d",&buf[i]);l = min(l, buf[i]), r = max(r, buf[i]);}while(l <= r) {mid = (l + r) >> 1;if(check(mid))l = mid + 1;elser = mid - 1;}printf("%d\n", r);return 0;
}
View Code

 

转载于:https://www.cnblogs.com/GRedComeT/p/11250078.html

这篇关于Day3-Q-修补木桶 HihoCoder1362的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684461

相关文章

Android智能家居实训day3

今日内容比较少啊 今日内容主要是通过hellocharts绘制折线图,主要是导包之后,在xml文件中添加控件的时候要写全路径,之后就是在生成图表的时候先通过 AxisValue集合接收横坐标数据集合,PointValues集合接收点集,再通过点集赋值给Line线对象,通过line内部的函数来对折线进行美化,最后放到线集里赋给折线对象。 XY轴的设置是通过Axis对象,也是要通过内部函数设置属性没

C++入门day3-面向对象编程(中)

前言:C++入门day2-面向对象编程(上)-CSDN博客 运算符重载 我们接触过函数重载,就是同名的函数有不同的功能。那么运算符重载,顾名思义也是赋予运算符其他的功能。在这里,我个人以为,运算符就是特殊函数的简写。我们先以加法切入本知识点: +加法运算符重载 如果我们想定义两数相加的函数我们该怎么办。第一时间我们就想到了这样写: int add(int a,int b){retu

【苍穹外卖】Day3 菜品接口

1 公共字段自动填充(待添加) 2 菜品接口 2.1 新增菜品 2.1.1 根据类型查询分类 接口 (已完成) 2.1.2 文件上传 接口 通用接口 配置文件 在自定义配置类中定义了四个属性 在配置文件中 代表当前使用的配置环境是 dev 开发环境 在 dev 里面继续配置阿里云 OSS 然后创建一个配置类 @Bean

YOLOV5入门教程day3

一. 导入包和基本配置 import argparseimport mathimport osimport randomimport subprocessimport sysimport timefrom copy import deepcopyfrom datetime import datetime, timedeltafrom pathlib import Pathtr

实习项目|苍穹外卖|day3

抽离出细节,复习Java开发的整个架构:JAVA三层架构,持久层,业务层,表现层的理解(SSH) 持久层是软件开发中的一个重要概念,它指的是负责数据持久化和数据库交互的部分。 公共字段自动填充(难度大) 1.根据原型进行需求分析与设计(接口文档) 2.根据接口设计DTO 3.编码controller-》service-》mapper 如何创建注解?SpringBoot如何创

Pandas-高级处理(二):连接与修补【concat(参数:axis、join、keys)、combine_first(根据index,df1的空值被df2替代)】

一、连接(concat):沿轴执行连接操作 pd.concat([data1, data2], axis=1):按照行或列进行连接操作: axis=0为列索引;axis=1为行索引; 比如我们将刚才处理好的one-hot编码与原数据连接 1、参数:axis import pandas as pd# 连接:concats1 = pd.Series([1, 2, 3])s2 = pd.Se

【C++ Qt day3】

2、设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。

Fx - day3 - 沙盒/更改集/互联更改集/配置包

Fxiaoke - day3 - 沙盒/更改集/互联更改集/配置包 学习目标:熟悉 沙盒,更改集,配置包,互联更改集 的概念以及使用场景 0、前言 沙盒理解 很多时候我们可能需要一个沙盒环境,什么是沙盒环境? 沙盒环境(sandbox org)拥有模拟生产环境去做上线前的测试,一般也叫UAT环境,沙盒在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。防止对系统其他部分产生不

如何在SharePoint管理中心检查数据库架构版本、修补级别和修补程序的常规监控

如何在SharePoint管理中心检查数据库架构版本、修补级别和修补程序的常规监控 准备: 确保你是能够访问管理中心的场管理员。 开始: 1. 打开管理中心--升级和迁移。 2. 点击“查看产品和修补程序的安装状态”。 3. 顶部有个下拉列表允许你选择查看整个场还是仅仅特定服务器上的部件。 4. 回到升级和迁移--查看数据库状态。场的所有数据库和状态显示出

别让那个缺口的木桶,困住了你的人生

「木桶理论」本身没有错,错的是大多数人在错误的阶段还遵循着不合时宜的准则。 hi ,欢迎光临一一爸爸的杂货铺。 「木桶理论」几乎人人都听过,即使没有,上学的时候你也总会被老师有意无意地熏陶。 「最弱的那门学科决定了你成绩总分数的上限」。这句话引导着你走过了九年义务教育,甚至帮你越过了高考的大坎。 当你参加了工作,迈入了社会,还老老实实地四处寻找自己的「短板」,竭力地补充、平衡。 却