酷代码 AI
菜单
服务商

硬盘装歌难题:最少压缩歌曲数量的计算方法

好的,以下是解决该问题的 Python 代码: ```python # 读取输入 n, m = map(int, input().split()) songs = [] for _ in range(n): # 读取每首歌原本大小和压缩后大小 a, b = map(int, input().split()) # 计算每首歌压缩后节省的空间 save = a - b songs.append((a, b, save)) # 按节省空间从大到小排序 songs.sort(key=lambda x: x[2], reverse=True) # 计算所有歌曲不压缩时的总大小 total_size = sum(song[0] for song in songs) # 如果不压缩就能装下,输出 0 if total_size <= m: print(0) else: # 需要压缩的歌曲数量 compressed_count = 0 for i in range(n): # 减去当前歌曲压缩后节省的空间 total_size -= songs[i][2] compressed_count += 1 if total_size <= m: print(compressed_count) break else: # 所有歌曲都压缩后还是装不下 print(-1) ``` 上述代码首先读取输入,将每首歌的原本大小、压缩后大小以及压缩节省的空间存储在列表中。接着按节省空间从大到小对歌曲排序,计算所有歌曲不压缩时的总大小。若不压缩就能装下,直接输出 0;否则,依次压缩节省空间最大的歌曲,直到能装下或所有歌曲都已压缩。如果所有歌曲都压缩后仍装不下,输出 -1。 ######[AI问答 | 395点数解答 | 2026-03-18 12:19:44]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]