当前位置: 首页 > news >正文 蓝桥杯真题(Python)每日练Day2 news 2025/8/2 17:27:21 题目 题目分析 对于本题首先确定其数据结构为优先队列,即邮费最小的衣服优先寄,算法符合贪心算法。可以直接使用queue库的PriorityQueue方法实现优先队列。关于PriorityQueue的使用方法主要有: import queue q = queue.Queue()# 队列 pq = queue.PriorityQueue()# 优先队列 >>> q.put(10)#10入队 >>> q.qsize()#队列大小 1 >>> q.get()#出队并返回队首元素 10 >>> q.empty()#队列是否为空 True 尤其注意使用put()函数时,第一个参数priority值越小优先级越高,也就是对首总是最小值。其实如果使用手写list的方法使用list的sort()方法也可以实现升、降序排列。本题题目简短却值得深思,可以把染色过程反过来思考,开始,所有的衣服颜色完全不同,最后染成同一种颜色,显然每次都寄出邮费最便宜的两种颜色的衣服,将他们染成通一种颜色,是最省钱的。可以将已经染成同一颜色的两件衣服逻辑上合并为1件衣服,在每个合并步骤中取最小的两个邮费相加,新的邮费在后面继续累加即可。整个过程和哈夫曼树的原理很相似,贪心算法中运用较多。 题解 import queue pq=queue.PriorityQueue() n=int(input()) a =list(map(int,input().split())) for i in range(len(a)):pq.put(a[i]) sum=0 while pq.qsize()>1:t=pq.get()+pq.get()sum+=tpq.put(t) print(sum) 查看全文 http://www.lryc.cn/news/284695.html 相关文章: IntelliJ IDEA 拉取gitlab项目 RHCSA上课笔记(前半部分) C++代码入门05 字符串容器 vue3 项目中 arguments 对象获取失败问题 12.线程同步 开发安全之:System Information Leak: External burp靶场--文件上传 mac 中vscode设置root启动 【MySQL数据库专项 一】一个例子讲清楚数据库三范式 【笔记】关于期刊 SpringMVC-.xml的配置 Java找二叉树的公共祖先 《Linux高性能服务器编程》笔记03 Java毕业设计-基于ssm的网上求职招聘管理系统-第85期 UDP和TCP 【C++】vector容器接口要点的补充 electron-vite中的ipc通信 探秘网络爬虫的基本原理与实例应用 音视频编解码学习记录 零基础小白刚刚入门Python的注意点总结~ 从 Context 看 Go 设计模式:接口、封装和并发控制 微信小程序字体大小 L1-062 幸运彩票(Java) 【计算机网络】2、传输介质、通信方向、通信方式、交换方式、IP地址表示、子网划分 【Linux 内核源码分析】堆内存管理 Qt 5.15.2 (MSVC 2019)编译 QWT 6.2.0 : 编译MingW或MSVC遇到的坑 模具制造企业ERP系统有哪些?企业怎么选型适配的软件 管理信息系统知识点复习 【Bug】.net6 cap总线+rabbitmq延时消息收不到 在 Python 中检查一个数字是否是同构数
题目 题目分析 对于本题首先确定其数据结构为优先队列,即邮费最小的衣服优先寄,算法符合贪心算法。可以直接使用queue库的PriorityQueue方法实现优先队列。关于PriorityQueue的使用方法主要有: import queue q = queue.Queue()# 队列 pq = queue.PriorityQueue()# 优先队列 >>> q.put(10)#10入队 >>> q.qsize()#队列大小 1 >>> q.get()#出队并返回队首元素 10 >>> q.empty()#队列是否为空 True 尤其注意使用put()函数时,第一个参数priority值越小优先级越高,也就是对首总是最小值。其实如果使用手写list的方法使用list的sort()方法也可以实现升、降序排列。本题题目简短却值得深思,可以把染色过程反过来思考,开始,所有的衣服颜色完全不同,最后染成同一种颜色,显然每次都寄出邮费最便宜的两种颜色的衣服,将他们染成通一种颜色,是最省钱的。可以将已经染成同一颜色的两件衣服逻辑上合并为1件衣服,在每个合并步骤中取最小的两个邮费相加,新的邮费在后面继续累加即可。整个过程和哈夫曼树的原理很相似,贪心算法中运用较多。 题解 import queue pq=queue.PriorityQueue() n=int(input()) a =list(map(int,input().split())) for i in range(len(a)):pq.put(a[i]) sum=0 while pq.qsize()>1:t=pq.get()+pq.get()sum+=tpq.put(t) print(sum) 查看全文 http://www.lryc.cn/news/284695.html 相关文章: IntelliJ IDEA 拉取gitlab项目 RHCSA上课笔记(前半部分) C++代码入门05 字符串容器 vue3 项目中 arguments 对象获取失败问题 12.线程同步 开发安全之:System Information Leak: External burp靶场--文件上传 mac 中vscode设置root启动 【MySQL数据库专项 一】一个例子讲清楚数据库三范式 【笔记】关于期刊 SpringMVC-.xml的配置 Java找二叉树的公共祖先 《Linux高性能服务器编程》笔记03 Java毕业设计-基于ssm的网上求职招聘管理系统-第85期 UDP和TCP 【C++】vector容器接口要点的补充 electron-vite中的ipc通信 探秘网络爬虫的基本原理与实例应用 音视频编解码学习记录 零基础小白刚刚入门Python的注意点总结~ 从 Context 看 Go 设计模式:接口、封装和并发控制 微信小程序字体大小 L1-062 幸运彩票(Java) 【计算机网络】2、传输介质、通信方向、通信方式、交换方式、IP地址表示、子网划分 【Linux 内核源码分析】堆内存管理 Qt 5.15.2 (MSVC 2019)编译 QWT 6.2.0 : 编译MingW或MSVC遇到的坑 模具制造企业ERP系统有哪些?企业怎么选型适配的软件 管理信息系统知识点复习 【Bug】.net6 cap总线+rabbitmq延时消息收不到 在 Python 中检查一个数字是否是同构数