蓝桥杯真题(Python)每日练Day2

题目

题目分析

  1. 对于本题首先确定其数据结构为优先队列,即邮费最小的衣服优先寄,算法符合贪心算法。
  2. 可以直接使用queue库的PriorityQueue方法实现优先队列。
  3. 关于PriorityQueue的使用方法主要有:
python 复制代码
import queue
q = queue.Queue()# 队列
pq = queue.PriorityQueue()# 优先队列
>>> q.put(10)#10入队
>>> q.qsize()#队列大小
1
>>> q.get()#出队并返回队首元素
10
>>> q.empty()#队列是否为空
True
  1. 尤其注意使用put()函数时,第一个参数priority值越小优先级越高,也就是对首总是最小值。
  2. 其实如果使用手写list的方法使用list的sort()方法也可以实现升、降序排列。
  3. 本题题目简短却值得深思,可以把染色过程反过来思考,开始,所有的衣服颜色完全不同,最后染成同一种颜色,显然每次都寄出邮费最便宜的两种颜色的衣服,将他们染成通一种颜色,是最省钱的。可以将已经染成同一颜色的两件衣服逻辑上合并为1件衣服,在每个合并步骤中取最小的两个邮费相加,新的邮费在后面继续累加即可。
  4. 整个过程和哈夫曼树的原理很相似,贪心算法中运用较多。

题解

python 复制代码
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+=t
  pq.put(t)
print(sum)
相关推荐
_GR6 分钟前
2025年蓝桥杯第十六届C&C++大学B组真题及代码
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
羊小猪~~30 分钟前
深度学习基础--CNN经典网络之InceptionV3详解与复现(pytorch)
网络·人工智能·pytorch·python·深度学习·机器学习·cnn
深度学习lover43 分钟前
<项目代码>YOLO小船识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·小船识别
愚公搬代码2 小时前
【愚公系列】《Python网络爬虫从入门到精通》055-Scrapy_Redis分布式爬虫(安装Redis数据库)
数据库·爬虫·python
浅浅2802 小时前
numpy、pandas内存优化操作整理
数据结构·经验分享·python·学习·性能优化·numpy·pandas
拓端研究室TRL2 小时前
Python+AI提示词比特币数据预测:Logistic逻辑回归、SVC及XGB特征工程优化实践
开发语言·人工智能·python·算法·逻辑回归
就叫飞六吧2 小时前
Python自动化selenium-一直卡着不打开浏览器怎么办?
python·selenium·自动化
亚林瓜子2 小时前
AWS Elastic Beanstalk的部署Python Flask后端服务(Hello,World)
python·flask·aws·eb
weixin_307779132 小时前
实现AWS Step Function安全地请求企业内部API返回数据
开发语言·python·云计算·aws
zhangjipinggom3 小时前
怎么安装python3.5-以及怎么在这个环境下安装包
开发语言·python