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

问题描述:英语预备爷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:掌握列表字典的基本操作:切片,访问,修改......

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>