问题描述:英语预备爷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:掌握列表字典的基本操作:切片,访问,修改......
赶上年末的小尾巴 大家一起加油吧~文章有不足之处欢迎批评指正!