题目 1629: 蓝桥杯算法训练VIP-接水问题

题目描述:

学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。现在有n名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i号同学的接水量为wi。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学j完成其接水量要求wj后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j同学第x秒结束时完成接水,则k同学第x+1秒立刻开始接水。若当前接水人数n’不足m,则只有n’个龙头供水,其它m−n’个龙头关闭。现在给出n名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。

样例  1  说明
第1秒,3人接水。第1秒结束时,1、2、3号同学每人的已接水量为1,3号同学接完水,4号同学接替3号同学开始接水。
第2秒,3人接水。第2秒结束时,1、2号同学每人的已接水量为2,4号同学的已接水量为1。
第3秒,3人接水。第3秒结束时,1、2号同学每人的已接水量为3,4号同学的已接水量为2。4号同学接完水,5号同学接替4号同学开始接水。
第4秒,3人接水。第4秒结束时,1、2号同学每人的已接水量为4,5号同学的已接水量为1。1、2、5号同学接完水,即所有人完成接水。
总接水时间为4秒。

代码:

package lanqiao;import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt(); //接水人数int m = sc.nextInt(); //水龙头人数int[] arr1 = new int[n];int[] arr2 = new int[m];for(int i = 0;i < n;i ++){arr1[i] = sc.nextInt();}if(n <= m){int max = 0;for(int i = 0;i < n; i++){max = max < arr1[i] ? arr1[i]:max;}System.out.println(max);}else{for(int i = 0;i < m;i ++){arr2[i] = arr1[i];}int index = m;for(int i = m;i < n;i ++){int min = arr2[0];for(int j = 0;j < m;j ++){min = min > arr2[j]?arr2[j]:min;}for(int j = 0;j < m;j ++){if(arr2[j] == min){arr2[j] += arr1[index];index ++;}if(index == n){break;}}}int max = 0;for(int i = 0;i < m;i++){max = max < arr2[i]?arr2[i]:max;}System.out.println(max);}}
}

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

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

相关文章

Linux shell:补充命令的使用

目录 一.导读 二.正文 三.结语 一.导读 上一篇介绍了脚本的简单概念以及使用&#xff0c;现在补充一些命令。 二.正文 目前处于全局目录&#xff0c;通过mkdir创建名我为day01的文件。 通过cd命令day01 切换至day01文件当中。 使用vim文本编辑器文件名&#xff08;firstdir&…

设计模式学习笔记——工厂方法模式

设计模式&#xff08;创建型&#xff09;—— 工厂方法模式 传统的获取对象方法&#xff0c;是通过 new 关键字获取一个对象&#xff0c;但是如果多个地方都需要该对象&#xff0c;就需要 new 很多次&#xff0c;这时候如果这个类发生了一些改变&#xff0c;如类名变了&#x…

静态上下文调用了非静态上下文

问题描述&#xff1a; static修饰的方法不能调用非static修饰方法 问题原因&#xff1a; 在Java中&#xff0c;静态方法&#xff08;如main方法&#xff09;可以直接访问静态成员&#xff08;包括静态变量和静态方法&#xff09;&#xff0c;但不能直接访问非静态成员&#…

【Python】进阶学习:pandas--query()用法详解

&#x1f4da;【Python】进阶学习&#xff1a;pandas–query()用法详解 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

剑指offer面试题24 二叉树搜索树的后续遍历序列

考察点 二叉搜索树&#xff0c;树的后序遍历知识点 题目 分析 本题目要求判断某序列是否是二叉搜索树的后序遍历序列&#xff0c;后序遍历的特点是左右根&#xff0c;因此序列的最后一个元素肯定是根结点&#xff0c;而前面的序列可以分为俩部分&#xff0c;第一部分是左子树…

LeetCode --- 无重复字符的最长子串

题目描述 无重复字符的最长子串 找到无重复的最长连续字符串。 示例1中 abc | bca | cab 都符合题意。输出3即可。 代码 可以使用暴力枚举 哈希表&#xff0c;哈希表来判断是否重复&#xff0c;枚举来判断每一种情况&#xff0c;需要开两层for循环&#xff0c;时间复杂度n…

linux高级编程:线程(二)、进程间的通信方式

线程&#xff1a; 回顾线程&#xff08;一&#xff09;&#xff1a; 1.线程间通信问题 线程间共享同一个资源&#xff08;临界资源&#xff09; 互斥&#xff1a; 排他性访问 linux系统 -- 提供了Posix标准的函数库 -- 互斥量&#xff08;互斥锁&#xff09; 原子操作&#x…

精通Matplotlib:从入门到精通的绘图指南

在本篇文章中&#xff0c;我们将深入探索Matplotlib库&#xff0c;这是一个强大的Python绘图库&#xff0c;广泛用于数据可视化。Matplotlib让我们能够以简单而直观的方式创建各种静态、动态和交互式的图表。无论你是数据分析师、科研人员&#xff0c;还是任何需要数据可视化的…

用Redis如何实现延迟队列?

在Redis中实现延迟队列可以利用有序集合&#xff08;Sorted Set&#xff09;和定时任务的方式。下面是一个基本的实现思路&#xff1a; 添加延迟任务&#xff1a; 将任务信息作为一个字符串存储在Redis中&#xff0c;同时将其对应的执行时间作为分数(score)存储在有序集合中。使…

Bililive-go 实现直播自动监控录制

前言 最近有直播录制的需求&#xff0c;但是自己手动录制太麻烦繁琐&#xff0c;于是用了开源项目Bililive-go进行全自动监控录制&#xff0c;目前这个项目已经有3K stars了 部署 为了方便我使用了docker compose 部署 version: 3.8 services:bililive:image: chigusa/bilil…

win环境nginx实战配置详解

项目中经常使用nginx做负载均衡&#xff0c;接口路由、文件、文档的上传及下载、视频的代理播放等等&#xff0c;都离不开nginx的支持&#xff0c;今天我们分享一下其个使用场景。 1、配置文件 nd-nginx.conf 全局配置 #全局配置端&#xff0c;对全局生效&#xff0c;主要设置…

leetcode-字符串相加

415. 字符串相加 题目中已经说明不能使用库函数直接将输入的字符串转换为整数。这就需要我们自己实现大数加法的逻辑&#xff0c;我们可以从两个字符串的最后一位开始&#xff0c;逐位相加&#xff0c;同时记录进位。如果某一位相加的结果超过10&#xff0c;那么需要向前进位。…

javascript实现的星座查询

今天在这个网站http://xzxys.wiicha.com/看到查询星座幸运色的效果&#xff0c;想研究一下代码&#xff0c;结果右键禁用。后来参考了一下别人的代码&#xff0c;琢磨着先实现了一下星座查询的功能&#xff0c;输入月份和日期四位数后&#xff0c;可以查询属于哪个星座&#xf…

群体风暴之锤(War3地图编辑器)

文章目录 0、大致原理1、创建隐形单位2、新事件开端3、环境→新条件4、动作4.1、单位组4.1.1、圆范围内单位4.1.2、指定条件 4.2、对单位组内的所有单位释放风暴之锤 0、大致原理 真MK向目标点释放风暴之锤时选定&#xff08;以技能释放点为圆心&#xff0c;设定半径&#xff0…

Python编程语言常用的包管理工具介绍

conda是一个开源的包管理器和环境管理器&#xff0c;用于安装、运行和更新包和它们的依赖项。conda可以用于Python编程语言&#xff0c;但它也支持其他编程语言。conda的主要特点是它能够在不同的环境中管理不同的包集合&#xff0c;这使得它非常适合于数据科学和机器学习项目&…

洛谷 P1439 最长公共子序列

题目描述 给出 1,2,…,n 的两个排列 P1​ 和 P2​ &#xff0c;求它们的最长公共子序列。 输入格式 第一行是一个数 n。 接下来两行&#xff0c;每行为 n 个数&#xff0c;为自然数 1,2,…,n 的一个排列。 输出格式 一个数&#xff0c;即最长公共子序列的长度。 输入输出…

详解算法的时间复杂度和空间复杂度!

目录 ​编辑 1. 算法效率 2. 时间复杂度 2.1 时间复杂度的概念 2.2 大O的表示渐进法 2.3 一个栗子 3. 空间复杂度 4. 常见复杂度对比 5. 完结散花 ​​​​​​​ 悟已往之不谏&#xff0c;知来者犹可追 创作不易&#xff0c;宝子们&#xff01;如果这篇文章对你们有…

Flex布局

Flex布局是一种用于创建灵活且自适应的布局模型&#xff0c;它使得元素能够更好地响应不同的屏幕尺寸和设备。Flex布局基于容器和项目的概念&#xff0c;通过设置容器的属性来控制项目的布局和对齐方式。 Flex布局的关键概念包括&#xff1a; 父容器&#xff08;Flex容器&…

Git实战(3)之merge与rebase区别

1,采用merge和rebase后,git log的区别,merge命令不会保留merge的分支的commit 2,处理冲突的方式: (一股脑)使用merge命令合并分支,解决完冲突,执行git add .和 git commit -mfix conflict。这个时候会产生一个commit。(交互式)使用rebase命令合并分支,解决完冲突,…

一种求最大最小值的方法(C语言)

作者在做项目时需要分析大量数据&#xff0c;其中需要用到最大值最小值的求解。这里分享一种简单好用的方法&#xff0c;并避免在代码中出现过多的for循环。 这个方法用到了qsort函数。 首先我们需要定义一个比较函数用来比较2个值的大小并通过返回值来表示比较的结果。 int…