列表

详情


NC229953. 小红的口罩

描述

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

输入描述

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

输出描述

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

示例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。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 1699ms, 内存消耗: 13468K, 提交时间: 2022-11-28 00:41:23

import heapq
n,k=map(int,input().split())
a=list(map(int,input().split()))
heapq.heapify(a)
ans=t=0
while ans<=k:
    m=heapq.heappop(a)
    ans+=m
    m*=2
    heapq.heappush(a,m)
    t+=1
print(t-1)

上一题