当前位置: 首页 > news >正文

【C++】牛客——小红的口罩

小红的口罩

  • ✨题目链接:[小红的口罩](https://ac.nowcoder.com/acm/problem/229953)
  • ✨题目描述
  • ✨输入描述:
  • ✨输出描述:
  • ✨示例1
    • 📍输入
    • 📍输出
    • 📍说明
  • ✨示例2
    • 📍输入
    • 📍输出
    • 📍说明
  • ✨解题思路
  • ✨代码

✨题目链接:小红的口罩

✨题目描述

疫情来了,小红网购了 n 个口罩。
众所周知,戴口罩是很不舒服的。
小红每个口罩戴一天的初始不舒适度为 ai。
小红有时候会将口罩重复使用(注:这是非常不卫生的!),每次重复使用时,该口罩的不舒适度会翻倍!
小红想知道,自己在不舒适度总和不超过 k 的情况下,最多能用现有的口罩度过多少天?

✨输入描述:

第一行输入两个正整数 n 和 k ,分别代表口罩的总数、以及小红最多能忍受的不舒适度总和。
第二行输入 n 个正整数 ai ,用空格隔开。分别代表每个口罩初始的不舒适度。
1 ≤ n ≤ 10^5
1 ≤ ai​ ,k ≤ 10^9

✨输出描述:

一个整数,代表小红最多能度过的天数。

✨示例1

📍输入

2 30
2 3

📍输出

5

📍说明

第一天用第一个口罩,不舒适度为2。
第二天用第一个口罩,不舒适度为4。
第三天用第二个口罩,不舒适度为3。
第四天用第二个口罩,不舒适度为6。
第五天用第二个口罩,不舒适度为12。
总不舒适度为2+4+3+6+12=27,没有超过30。
可以证明,无论怎样分配,都无法度过6天且不舒适度总和不超过30

✨示例2

📍输入

3 5
7 6 8

📍输出

0

📍说明

显然,使用任何一个口罩都会使不舒适度超过5。

✨解题思路

我们可以把口罩的不舒适度数组放在,优先级队列
priority_queue 头文件<queue>
利用 greater<> 小根堆比较方式,把最小的不舒适度放在堆顶
这样我们每次取舒适度最小的带,就可以获取最大的使用时间
每次使用完后把队顶元素pop出去,然后在插入pop出的元素的二倍

✨代码

#include <iostream>
#include <queue>
#include <vector>
using namespace std;int main() {int n, k;cin >> n >> k;int tmp;priority_queue<int, vector<int>, greater<int>> pq;for (int i = 0; i < n; i++){cin >> tmp;pq.push(tmp);}int times = 0, sum = 0;while (sum <= k){sum += pq.top();if (sum > k) break;tmp = pq.top();pq.pop();pq.push(tmp * 2);times++;}cout << times << endl;return 0;
}

※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

相关文章:

  • NodeJS安装并生成Vue脚手架(保姆级)
  • 从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
  • zabbix监控mysql
  • OpenHarmony 实战开发PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件
  • WXSS (WeiXin Style sheets)
  • Java中volatile关键字
  • 英语学习笔记22——Give me/him/her/us/them a .... Which one?
  • js处理服务器响应Blob对象格式文件处理
  • 【Unity】免费的高亮插件——QuickOutline
  • 【全开源】JAVA同城搬家系统源码小程序APP源码
  • Scrapy框架简单介绍及Scrapy项目编写详细步骤(Scrapy框架爬取豆瓣网站示例)
  • 在Ubuntu系统中使用Systemctl添加启动项的详细指南
  • Mybatis入门——其他查询操作和数据库连接池(4)
  • 【oracle】Oracle RAC中的GNS到底是什么?
  • ctfshow web入门 黑盒测试
  • Google 是如何开发 Web 框架的
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CSS魔法堂:Absolute Positioning就这个样
  • git 常用命令
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java反射-动态类加载和重新加载
  • k8s如何管理Pod
  • Node 版本管理
  • October CMS - 快速入门 9 Images And Galleries
  • python3 使用 asyncio 代替线程
  • rc-form之最单纯情况
  • Redux系列x:源码分析
  • Spring Boot MyBatis配置多种数据库
  • underscore源码剖析之整体架构
  • VuePress 静态网站生成
  • 代理模式
  • 分布式熔断降级平台aegis
  • 简析gRPC client 连接管理
  • 小程序01:wepy框架整合iview webapp UI
  • 由插件封装引出的一丢丢思考
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • #QT(一种朴素的计算器实现方法)
  • (39)STM32——FLASH闪存
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)Linux——Linux常用指令
  • (黑马C++)L06 重载与继承
  • (转)大道至简,职场上做人做事做管理
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(六):替换字符串中匹配的子串
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .java 9 找不到符号_java找不到符号
  • .NET WPF 抖动动画
  • .Net 中Partitioner static与dynamic的性能对比