1095 解碼pat准考證 (25 分)
pat 准考證號由 4 部分組成:
現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。
輸入首先在一行中給出兩個正整數 n(≤104)和 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 內的整數 其間以空格分隔。考生...