1095 解碼PAT准考證 python

2021-09-11 16:43:06 字數 3307 閱讀 1610

1095 解碼pat准考證 (25 分)

pat 准考證號由 4 部分組成:

現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。

輸入首先在一行中給出兩個正整數 n(≤10​4​​)和 m(≤100),分別為考生人數和統計要求的個數。

接下來 n 行,每行給出乙個考生的准考證號和其分數(在區間 [0,100] 內的整數),其間以空格分隔。

考生資訊之後,再給出 m 行,每行給出乙個統計要求,格式為:型別 指令,其中

對每項統計要求,首先在一行中輸出case #: 要求,其中#是該項要求的編號,從 1 開始;要求即複製輸入給出的要求。隨後輸出相應的統計結果:

如果查詢結果為空,則輸出na

8 4

b123180908127 99

b102180908003 86

a112180318002 98

t107150310127 62

a107180908108 100

t123180908010 78

b112160918035 88

a107180908021 98

1 a2 107

3 180908

2 999

case 1: 1 a

a107180908108 100

a107180908021 98

a112180318002 98

case 2: 2 107

3 260

case 3: 3 180908

107 2

123 2

102 1

case 4: 2 999

na

研究了一上午,也只對了測試樣例的那個測試點,不過這乙個點15分,就這樣吧。。測試0正確,1非零,2錯誤,3和4超時

大題上思路應該是可以做下去的,邊界值特殊情況沒考慮

乙個半月以前還完全不會做這道題呢

n,m=[int(x) for x in input().split()]

ls=for i in range(n):

case_c={}

for i in range(m):

case_c[i+1] = input().split()

dic1={} #case1 key=考號 values=分數

dic2={} #case2 key=考場號 values=人數

dic3={} #case3 key=考場號 values=人數

dic1_1={} #key=1,2,3... values=考號

dic1_2={} #key=1,2,3... values=分數

dic3_1={} #和dic1_1、dic1_2類似功能

dic3_2={}

for i in range(m):

print('case {}: {} {}'.format(i+1,case_c[i+1][0],case_c[i+1][1]))

if case_c[i+1][1]=='a' or case_c[i+1][1]=='b' or case_c[i+1][1]=='t':

for j in ls:

if j[0][0]==case_c[i+1][1]:

dic1[j[0]]=int(j[1])

f=zip(dic1.values(),dic1.keys())

y = sorted(f,reverse=true)

ls_case1=list(y)

for a in range(len(ls_case1)):

dic1_1[a+1]=ls_case1[a][0]

for b in range(len(ls_case1)):

dic1_2[b+1]=ls_case1[b][1]

print(dic1_2)

for k in dic1_1:

try:

if dic1_1[k]==dic1_1[k+1] :

if dic1_2[k] > dic1_2[k+1]:

mi=dic1_2[k+1]

else:

mi=dic1_2[k]

print(mi,dic1_1[k])

else:

print(dic1_2[k],dic1_1[k])

except:

print(dic1_2[k-1],dic1_1[k])

if len(case_c[i+1][1]) == 3:

cnt_g=0 #計算總分

cnt=0 #計算人數

for j in ls:

if j[0][1:4] == case_c[i+1][1]:

cnt_g += int(j[-1])

cnt +=1

if cnt>0:

print(cnt,cnt_g)

else:

print('na')

if len(case_c[i+1][1]) == 6:

for j in ls:

if j[0][4:10] == case_c[i+1][1]:

if j[0][1:4] not in dic3:

dic3[j[0][1:4]]=1

else:

dic3[j[0][1:4]] += 1

z = zip(dic3.values(),dic3.keys())

y = sorted(z,reverse=true)

ls_case3=list(y)

for a in range(len(ls_case3)):

dic3_1[a+1]=ls_case3[a][0]

for b in range(len(ls_case3)):

dic3_2[b+1]=ls_case3[b][1]

for k in dic3_1:

try:

if dic3_1[k]==dic3_1[k+1] :

if dic3_2[k] > dic3_2[k+1]:

mi=dic3_2[k+1]

else:

mi=dic3_2[k]

print(mi,dic3_1[k])

else:

print(dic3_2[k-1],dic3_1[k])

except:

print(dic3_2[k],dic3_1[k])

1095 解碼PAT准考證

1095 解碼pat准考證 25 分 pat 准考證號由 4 部分組成 現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。輸入首先在一行中給出兩個正整數 n 10 4 和 m 100 分別為考生人數和統計要求的個數。接下來 n 行,每行給出乙個考生的准考證號和其分數 在區間 0,...

1095 解碼PAT准考證

pat 准考證號由 4 部分組成 現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。輸入首先在一行中給出兩個正整數 n 10 4 和 m 100 分別為考生人數和統計要求的個數。接下來 n 行,每行給出乙個考生的准考證號和其分數 在區間 0,100 內的整數 其間以空格分隔。考生...

1095 解碼PAT准考證

pat 准考證號由 4 部分組成 現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。輸入首先在一行中給出兩個正整數 n 10 4 和 m 100 分別為考生人數和統計要求的個數。接下來 n 行,每行給出乙個考生的准考證號和其分數 在區間 0,100 內的整數 其間以空格分隔。考生...