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

Posted Py小郑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:掌握列表字典的基本操作:切片,访问,修改......

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

以上是关于Python蓝桥杯算法训练—预备爷的悲剧的主要内容,如果未能解决你的问题,请参考以下文章

未完待续Java蓝桥杯--算法训练典型问题的递归框架

[蓝桥杯Python]算法练习算法基础算法训练算法模板(持续更新)

蓝桥杯 算法训练 ALGO-121 猴子分苹果

蓝桥杯-算法训练--ALGO-6 安慰奶牛

蓝桥杯练习系统—算法训练 P1102

蓝桥杯练习系统—算法训练 s01串