算法设计与分析 SCAU17964 水桶打水

news2024/12/26 23:18:38

17964 水桶打水

时间限制:1000MS 代码长度限制:10KB
提交次数:25 通过次数:9

题型: 编程题 语言: G++;GCC;VC;JAVA

在这里插入图片描述


Description

有n个人(n<100000)带着大大小小的水桶容器(每人一个水桶)排队到r个(r<1000)水龙头打水,
他们装满水桶的时间分别是t1,t2,……,tn,并且时间是整数且各不相同,应如何安排他们的打水顺序
才能使他们花费的总时间和最少?


输入格式

分两行:第一行人数n和水龙头数r;第二行为t1 t2 …… tn。


输出格式

最少的所有人的总花费时间和。


输入样例

4 2
2 6 4 5


输出样例

23


解题思路

贪心算法

每个人整个打水的时间为:本人等待时间 + 本人实际充水的时间;
而本人的等待时间又为:排在 本人之前所有人 的充水时间之和。

  1. 本题目标是所有人打水花费的总时间和最小。
  2. 由于排在越前面的人,他的充水时间计算次数就越多
  3. 因此充水时间 越小的人排在前面 可使所有人打水花费的总时间和越小,所以用贪心法解答。


算法思路

(1)将输入的充水时间按从小到大排序;
(2)将排序后的时间按顺序依次放入最早完成的水龙头的排队队列中,同时使用 greedy 数组记录该水龙头下一个使用者需等待时间
(3)统计,输出合计后的完成时间和,即每次都进行 res += greedy[i % r] + a[i] 即可(该水龙头前面的人使用时间 + 现在使用的人需使用时间)



更多注释可查看下方的完整代码中,有助于理解。

代码如下

#include <iostream>
#include <string.h>
#include <algorithm>

/*
4 2
2 6 4 5
*/

using namespace std;

int main()
{
    int i, n, r, res = 0;
    int a[100001]; // 记录各个人需要花费的打水时间
    int greedy[100001]; // 用于记录每个水龙头的占用时间,共 r 个水龙头
    memset(greedy, 0, sizeof(greedy));

    cin >> n >> r;

    for(i = 0; i < n; i++) {
        cin >> a[i];
    }

    sort(a, a + n);

    for(i = 0; i < n; i++) {
        res += greedy[i % r] + a[i]; // 该水龙头前面的人使用时间 + 现在使用的人需使用时间
        greedy[i % r] += a[i]; // 更新该水龙头下一个使用者需等待时间
    }

    cout << res << endl;
    return 0;
}

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

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

相关文章

JS基础习题

1.JavaScript变量命名规则 1.在JavaScript中以下&#xff0c;以下哪些变量名是非法的&#xff08;会导致程序报错&#xff09;&#xff1f; 1person name var $orderwera23 uiuiuqwer4_23aser2 A .1person&#xff0c;name B .name&#xff0c;var C .$orderwera23&#xff0c…

怎么自制小程序?【自己制作小程序】

说到制作小程序&#xff0c;有些动手能力比较强的小伙伴可能就在想怎么自制小程序。想自制小程序&#xff0c;至少也是需要会一些编程代码的&#xff0c;如果不懂代码就只能找其他方法了。那么怎么自制小程序呢&#xff1f; 现在市面上有很多的小程序制作工具&#xff0c;可以…

hexo建站新手入门

Hexo是一款基于Node.js的静态博客框架&#xff0c;依赖少易于安装使用&#xff0c;可以方便的生成静态网页托管在GitHub和Coding上&#xff0c;是搭建博客的首选框架。 hexo史上最全搭建教程 Hexo搭建步骤 安装Git安装Node.js安装HexoGitHub创建个人仓库生成SSH添加到GitHub…

几分钟让你了解Linux下文件权限掩码及作用

在说文件权限掩码之前&#xff0c;必须了解下linux下的文件权限&#xff0c;比如在linux下可以通过“ls -l”命令查看文件的权限&#xff0c;输入后可以获得如下显示&#xff1a; drwxrwxr-x 3 linux linux 4096 Jun 6 18:03 test 在显示中“drwxrwxr-x”这十个字母中第一个字母…

数据分析入门必看|数据分析到底应该学什么?

数据分析在工作和学习中用到的越来越多&#xff0c;以前也成体系的分享了一些内容&#xff0c;详情参考链接&#xff1a;数据分析系列 1/32 | 数据分析入门理解。在之前的分享内容里&#xff0c;是为了让大家更快上手入门去学习使用的&#xff0c;本次内容合计里&#xff0c;每…

知乎转发最高的 Java 面试成神笔记,GitHub 已下载量已过百万

在某论坛上面对于“中国程序员数量是否已经饱和或者过剩”这个话题很火&#xff01; 今年大家都有一个共同的感受&#xff1a;工作不好找&#xff0c;薪资不理想&#xff0c;面试造火箭。 其实&#xff0c;由于不仅是因为今年受疫情影响&#xff0c;很多公司经营不下去&#xf…

防不胜防?网络钓鱼攻击常用手法盘点与防护建议

【环境搭建资料、工具包、全套视频…等籽料】私信聆取 网络钓鱼攻击是最常见、最容易让受害者中招的网络犯罪之一&#xff0c;随着网络技术的不断发展&#xff0c;攻击者的伪装手段也变得愈发狡诈&#xff0c;攻击频次也再增高&#xff0c;各种新奇的攻击方式层出不穷。有些攻…

day30 SQL注入CTF二次堆叠DNS带外

二次注入 原理 二次注入是存储型注入&#xff0c;可以理解为构造恶意数据存储在数据库后&#xff0c;恶意数据被读取并进入到了SQL查询语句所导致的注入。恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中&#xff0c;当Web程序调用存储在数据库中的恶意数据并执行…

成都地区一汽大众汽车4s店营销策略研究

目 录 第一章 绪论 1 1.1选题及意义 1 1.2 国内外现状 1 1.3研究主要内容 3 1.4研究方法 3 第二章 成都地区一汽大众汽车4S店营销市场调查分析 4 2.1调查目的 4 2.2调查过程 4 2.3数据分析与调查结果 4 2.4启示与思考 8 第三章 成都地区一汽大众汽车4S店SWOT分析 9 3.1成都地区…

过五关,斩六将!「网易/美团/菜鸟」已拿offer【Java岗】

经过两个月的辛苦奋战&#xff0c;最终拿到了网易、头条、字节、菜鸟的offer&#xff0c;感觉面试的时候还是很幸运的&#xff0c;很多题都是我之前刷题刷到过的&#xff0c;哈哈哈~~下面给广大网友们分享一下我的面经&#xff08;网易/美团/菜鸟&#xff09;供大家参考参考...…

python教程:*的用法,你可能错过了......

人生苦短&#xff0c;我用python python中*是非常常见的一个运算符&#xff0c;它主要有以下几个功能&#xff1a; 乘法运算符&#xff1b; 函数形参表示可变参数&#xff1b; 函数实参代表tuple&#xff1b; 序列解包为tuple&#xff1b; zip解包运算&#xff1b; 更多学习干…

SpringCloud学习笔记 - 消息总线 - Spring Cloud Bus

1. 消息总线简介 消息代理中间件构建了一个共用的消息主题让所有微服务实例订阅&#xff0c;当该消息主题产生消息时会被所有微服务实例监听和消费。 消息代理又是什么&#xff1f;消息代理是一个消息验证、传输、路由的架构模式&#xff0c;主要用来实现接收和分发消息&…

Java EE|进程与线程的区别与联系

大数据时代&#xff0c;数据规模非常庞大&#xff0c;所以我们在实际开发过程中&#xff0c;需要经常进行并发问题的处理。对于此问题&#xff0c;我们通常有两种解决方案&#xff1a;多进程方式和多线程方式。但是由于多进程对于资源的共享非常困难&#xff0c;而多线程并发可…

一个宁静祥和没有bug的下午和SqlSession的故事

作者&#xff1a;马跃 1 背景 这是一个安静祥和没有bug的下午。 作为一只菜鸡&#xff0c;时刻巩固一下基础还是很有必要的&#xff0c;如此的大好时机&#xff0c;就让我来学习学习mybatis如何使用。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i…

模拟退火--学习笔记

模拟退火算法来源&#xff1a; 固体退火原理&#xff0c;将固体加温至充分高&#xff0c;再让其徐徐冷却&#xff0c;加温时&#xff0c;固体内部粒子随温升变为无序状&#xff0c;内能增大&#xff0c;而徐徐冷却时粒子渐趋有序&#xff0c;在每个温度都达到平衡态&#xff0c…

【图神经网络论文整理】(三)—— HOW TO FIND YOUR FRIENDLY NEIGHBORHOOD:SuperGAT

ICLR 2021Dongkwan Kim & Alice Oh论文地址 本文介绍的论文是《HOW TO FIND YOUR FRIENDLY NEIGHBORHOOD: GRAPH ATTENTION DESIGN WITH SELF-SUPERVISION》。 该篇论文提出了一个新的网络模型SuperGAT&#xff0c;目的是解决当图中存在噪声能够学习到更多的表达注意力&a…

实体店做微信商城小程序制作步骤_分享微信商城小程序的作用

各行各业都在用微商城小程序开店&#xff0c;不管是餐饮店还是便利店&#xff0c;还是五金店。都是可以利用微信小程序开一个线上店铺。实现线上跟线下店铺更加全面的结合。维护好自己的老客户。让您的客户给您拉新&#xff0c;带来新客户。 小程序经过这几年的快速发展和不断升…

计算机毕业设计之java+ssm企业销售管理系统

项目介绍 本企业销售管理系统主要包括系统用户管理模块、商品信息模块、进货入库管理、员工信息管理、销售管理、登录模块、和退出模块等多个模块系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统是独立的运行&#xff0c;不依附于其他系统&#xff0c…

Day4:写前端项目(html+css+js)

xiao效果&#xff1a; 页面布局 使用grid <div class"grid-container"><div><h1 class"uppercase ff-sans-cond letter-spacing-2 text-accent"> so, you want to travel to<span class"uppercase letter-spacing-2 fs-900 te…

【无线传感器】使用 Mamdani 模糊推理系统改进无线传感器网络路由和数据包传递(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…