問題描述:英語預備爺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:掌握串列字典的基本操作:切片,訪問,修改......
趕上年末的小尾巴 大家一起加油吧~文章有不足之處歡迎批評指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397365.html
標籤:python
