​LeetCode解法汇总LCP 33. 蓄水

news/2024/7/3 2:28:42

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。小扣有以下两种操作:

  • 升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]+1
  • 蓄水:将全部水桶接满水,倒入各自对应的水缸

每个水缸对应最低蓄水量记作 vat[i],返回小扣至少需要多少次操作可以完成所有水缸蓄水要求。

注意:实际蓄水量 达到或超过 最低蓄水量,即完成蓄水要求。

示例 1:

输入:bucket = [1,3], vat = [6,8]

输出:4

解释: 第 1 次操作升级 bucket[0]; 第 2 ~ 4 次操作均选择蓄水,即可完成蓄水要求。

示例 2:

输入:bucket = [9,0,1], vat = [0,2,2]

输出:3

解释: 第 1 次操作均选择升级 bucket[1] 第 2~3 次操作选择蓄水,即可完成蓄水要求。

提示:

  • 1 <= bucket.length == vat.length <= 100
  • 0 <= bucket[i], vat[i] <= 10^4

 

解题思路:

* 思路:

* 分别尝试1次,2次,3次。。。N次蓄水操作。N的上限vat中的最大值。

* 每次尝试的时候,统计需要升级水桶的次数。两者之和就是需要操作的次数。

* 另外尝试蓄水次数的时候,如果蓄水次数大于当前的最小次数,则没必要继续尝试了。

* 则求出最小的次数即可。

代码:

#include <iostream>
#include <map>
#include <list>
#include <vector>
#include "Solution_LCP33.h"

int Solution_LCP33::storeWater(std::vector<int> &bucket, std::vector<int> &vat)
{
    int maxk = 0;
    for (int i = 0; i < vat.size(); i++)
    {
        if (vat[i] > maxk)
        {
            maxk = vat[i];
        }
    }
    if (maxk == 0)
    {
        return 0;
    }
    int res = std::numeric_limits<int>::max();
    for (int k = 1; k <= maxk && k < res; k++)
    {
        int t = 0;
        for (int i = 0; i < bucket.size(); i++)
        {
            int v = (vat[i] + k - 1) / k - bucket[i];
            if (v > 0)
            {
                t += v;
            }
        }
        if (t + k < res)
        {
            res = t + k;
        }
    }
    return res;
}


http://lihuaxi.xjx100.cn/news/1165490.html

相关文章

磐维数据库panweidb单节点服务器在centos7.9安装(研发环境)

一、系统环境优化 1.1 关闭SELINUX # 修改配置文件 cat /etc/selinux/config | grep -i SELINUX SELINUXdisabled# 关闭SELINUX setenforce 0 1.2 内核参数优化 vi /etc/sysctl.conf 添加# panweidb net.ipv4.tcp_max_tw_buckets 10000 net.ipv4.tcp_tw_reuse 1 net.ipv4.t…

汇聚支付APP+技术方案介绍

一、时序图 商户使用汇聚支付的 APP方案&#xff0c;需要两个步骤&#xff1a; 步骤一&#xff1a; 请求汇聚支付的支付接口&#xff0c;https://www.joinpay.com/trade/uniPayApi.action 获取返回的关键参数 rc_Result。 步骤二&#xff1a; 商户 APP 按照微信的 SDK 规范使…

Vicuna:斯坦福开源一个性能相当于90%ChatGPT的聊天机器人

自从Meta公司发布LLaMA以来&#xff0c;围绕它微调和开发的模型越来越多&#xff0c;这得益于它的性能和效果&#xff0c;2023年3月份发布的草泥马&#xff08;Alpaca&#xff09;是由Meta的LLaMA 7B微调而来的全新模型&#xff0c;仅用了52k数据&#xff0c;性能约等于GPT-3.5…

Redis7实战加面试题-基础篇(Redis持久化,Redis事务,Redis管道,Redis发布订阅)

Redis持久化 RDB (Redis DataBase) RDB&#xff08;Redis 数据库&#xff09;&#xff1a;RDB 持久性以指定的时间间隔执行数据集的时间点快照。实现类似照片记录效果的方式&#xff0c;就是把某一时刻的数据和状态以文件的形式写到磁盘上&#xff0c;也就是快照。这样一来即使…

Java企业级开发学习笔记(4.1)Spring Boot入门程序

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【http://t.csdn.cn/Qh554】 文章目录 一、使用Maven方式构建Spring Boot项目1.1 创建Maven项目1.2 添加依赖1.3 创建入口类1.4 创建控制器1.5 运行入口类1.6 访问Web页面1.7 修改访问映射路径1.8 定制启动标语1.8.1 …

python获取tx弹幕数据并制作词云图

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 知识点介绍: 爬虫基本思路流程 requests模块的使用 pandas读取表格数据 环境介绍: 开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 模块使用&#xff1a; requests >>> pip install requests pa…

推动解决新能源电车充电不便的难题

安科瑞虞佳豪 新一轮科技革命和产业变革的蓬勃发展&#xff0c;加速了汽车与能源、交通、信息通信等领域的深度融合&#xff0c;汽车产业朝着电动化、智能化、网联化方向前行&#xff0c;新能源汽车产业迎来了前所未有的发展机遇。花生好车紧跟发展潮流和趋势&#xff0c;大力…

目录层次结构中区分不同功能的RPM包,同时只有一份共享的repodata

使用本地的yum源有几个潜在的好处&#xff1a; 更快的下载速度&#xff1a; 本地yum源通常位于本地网络上&#xff0c;因此可以通过局域网快速获取软件包&#xff0c;而不需要依赖互联网连接。这样可以提供更快的下载速度&#xff0c;节省时间和带宽消耗。 离线访问&#xff1…