藍橋杯 演算法提高 班級排名 Python

2021-10-02 14:40:11 字數 1731 閱讀 6130

時間限制:1.0s 記憶體限制:256.0mb

問題描述

達達在陶陶的影響下,也對學習慢慢的產生了興趣。

他在每次考試之後,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了,於是他給了達達所有人的成績,讓他自己去算出自己的排名。

可人太多了,達達也無法立即算出來,於是他想讓你幫幫他。

輸入格式

第一行為乙個整數n,代表班級的學生總數。

接下來n行,每行乙個字串,代表乙個學生的姓名,第一行總是dada。

接下來一行乙個整數m,代表一共有m次考試。

每次考試有n行,每行有以乙個空格分隔的乙個正整數s和乙個字串p,代表名字為p的學生在這次考試中得了s分。

輸出格式

一共m行,每行乙個整數,代表達達在班級裡的排名,排名是這一次考試過後的所有考試總分排名,如果達達和別人並列,達達總是排在前面。

樣例輸入

3dadaab

249 dada

49 a

48 b

80 a

85 b

83 dada

樣例輸出12

資料規模和約定

n <= 100,名字長度不超過30,分數不超過100

思路:

這道題也是題目巨坑,一定要注意,不是比較單次考試,而是dada在每一次考試後在上一次基礎上的總分排名,python用字典訪問分數,每次需要排名時,用列表取出後排序輸出「dada」的下標,即為排名

**:

from operator import itemgetter

n =eval

(input()

)stu =

for i in

range

(n):

stu[

input()

]=0m =

eval

(input()

)for i in

range

(m):

for k,v in stu.items():

tmp =

input()

.split(

)if tmp[1]

notin stu:

stu[tmp[1]

]=int(tmp[0]

)else

: stu[tmp[1]

]+=int(tmp[0]

) test =

for k, v in stu.items():

if k ==

'dada'

:[v, k,1]

)else

:[v, k ,0]

) test.sort(key = itemgetter(0,

2),reverse=

true

)# print(test)

for j in

range

(n):

if'dada'

in test[j]

:print

(j+1

)

演算法提高 班級排名

達達在陶陶的影響下,也對學習慢慢的產生了興趣。他在每次考試之後,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了,於是他給了達達所有人的成績,讓他自己去算出自己的排名。可人太多了,達達也無法立即算出來,於是他想讓你幫幫他。輸入格式 第一行為乙個整數n,代表班級的學生總數。接下來n行...

演算法提高 班級排名

達達在陶陶的影響下,也對學習慢慢的產生了興趣。他在每次考試之後,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了,於是他給了達達所有人的成績,讓他自己去算出自己的排名。可人太多了,達達也無法立即算出來,於是他想讓你幫幫他。第一行為乙個整數n,代表班級的學生總數。接下來n行,每行乙個...

藍橋杯 演算法提高VIP 班級排名

題目描述 達達在陶陶的影響下,也對學習慢慢的產生了興趣。他在每次考試之後,都會追著老師問,自己在班級的總名次是多少。考試一多,老師也不耐煩了,於是他給了達達所有人的成績,讓他自己去算出自己的排名。可人太多了,達達也無法立即算出來,於是他想讓你幫幫他。資料規模和約定 n 100,名字長度不超過30,分...