硬盘装歌难题:最少压缩歌曲数量的计算方法
好的,以下是解决该问题的 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]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)221
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)227
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)273
- Java 利用 Apache Commons Imaging 压缩 PNG 图片至指定大小,附代码及注意事项(阿里通义 | 524点数解答 | 2024-02-27 13:54:15)296
- Java 实现电脑组装:建造者模式的类图与代码全解析(字节豆包 | 2012点数解答 | 2025-03-20 15:28:28)210
- 用Python处理商品销售数据:替换类别、合并类目并输出前5行(百度文心 | 486点数解答 | 2024-08-23 09:14:21)309
- Python 破解:计算序列中满足特定取余条件元素的数量(字节豆包 | 174点数解答 | 2025-05-13 21:29:55)185
- 一文搞定!无名杀“再生安瓿”技能代码全解析及注意事项(字节豆包 | 464点数解答 | 2025-06-15 20:06:30)158
- C# 实现商品类:数量限制 100 及开发注意要点(字节豆包 | 737点数解答 | 2025-09-03 14:44:56)98
- 易语言多线程实战:获取进程信息、读写内存与多线程协同操作(字节豆包 | 790点数解答 | 2025-11-28 03:08:24)37
- 易语言多线程:实现获取进程内存数据与C语言格式基址的高效代码示例(字节豆包 | 677点数解答 | 2025-11-28 03:12:31)45