Python蓝桥杯算法训练—预备爷的悲剧

该博客介绍了一种利用Python解决英语单词复习问题的方法。文章首先解析输入格式,然后通过建立字典记录单词最早出现的页码,再通过去重统计需要复习的页数。最终,给出了一个通过优化实现的Python代码示例,该代码在限定时间内成功解决了问题并达到了内存限制的要求。
摘要由CSDN通过智能技术生成

问题描述:英语预备爷gzp是个逗(tu)比(hao),为了在即将到来的英语的quiz中不挂科,gzp废寝忘食复习英语附录单词表,俨然一场人间悲剧。不过上天有好生之德,上帝扔给了gzp一张纸,上面记载了将要考到的单词。不过gzp是个逗比,之前复习的东西全忘记了,所以他又要再来一次复习。不过已经知道了要考的单词,所以不需要复习单词表的所有页数。因此,现在需要你帮助他求出有多少页纸需要复习。他会告诉你每个单词会在哪几页出现,并且告诉你要考哪些单词,你只要告诉他答案就可以了。由于一个单词会出现在不同页上,只需要复习在最前面一页上的就可以了

输入格式:第一行一个整数n,表示单词附录有n个单词。接下来n行每行一个小写字母组成的单词和一个整数,表示某一个单词和它所在的页数。接下来是一行整数m,表示要考m个单词,接下来m行小写字母组成的单词,表示要考到的单词

输出格式:一个数,表示需要复习的页数

样例输入:5
ab 1
ac 2
ab 2
ac 3
c 3
3
ab
ac
c

样例输出:

3

n=int(input(''))
dic1={}
for i in range(n):
    b=input('').strip().split()#输入ab 2 则 b=['ab','2'] 
    if dic1.get(b[0]) is None:
        dic1.setdefault(b[0],b[1])#存入单词和所在页码
    elif int(dic1.get(b[0]))>int(b[1]):#更新单词最早出现的页码
        dic1[b[0]]=b[1]
    else:
        pass
m=int(input(''))
res=[]
for i in range(m):
    b=input('').strip()
    res.append(b)#依次存入列表 如['ab','ac','c']

s=[]
for i in res:
     s.append(dic1.get(i))#储存每个单词所在页码
print(len(set(s)))#去除重复页码 累加

 内存限制512MB 时间1s

评测结果100分 内存使用19.64MB

解决这道题步骤 1:题目冗长,抓取关键信息

2:两个突破口①记录单词最早出现的页码②记忆同一页上的单词只需查看一页 3:对应的解决办法①:通过比较,更新字典字母对应的页码 ②通过set去重 最后统计页码个数即最后结果

3:掌握列表字典的基本操作:切片,访问,修改......

赶上年末的小尾巴  大家一起加油吧~文章有不足之处欢迎批评指正!

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Py小郑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值