201612 3許可權查詢(Python 100)

2021-10-05 00:02:13 字數 3057 閱讀 9106

建立乙個字典,key = 使用者名稱, value = 許可權字典

# ['crm:2','git:2','git:3','game'] -->

# 經過合併處理後,將許可權列表轉化成字典

deftransautlist

(aut_list)

: aut_dict =

dict()

for item in aut_list:

# 'crm:2'

type

,*level = item.split(

':')

level =

int(level[0]

)if level else-1

iftype

in aut_dict:

aut_dict[

type]=

max(aut_dict[

type

], level)

else

: aut_dict[

type

]= level

return aut_dict

# 函式丟棄 p 段的輸入(沒用)

defp()

: n =

int(

input()

)for _ in

range

(n):

input()

# 對應題中的r段, 返回乙個字典 ,key=rolename , value = 許可權類別和等級對應的字典

defr()

: ret =

dict()

n =int(

input()

)for _ in

range

(n):

role, _,

*pri_list =

input()

.split(

) pri_dict = transautlist(pri_list)

ret[role]

= pri_dict

return ret

# 返回key = personname, value = 許可權字典的 乙個字典

defu

(rdict)

: n =

int(

input()

) ret =

dict()

for _ in

range

(n):

# alice 2 it qa

name, _,

*roles =

input()

.split(

) mgpri =

dict()

# 開始合併角色的許可權

for role in roles:

# 遍歷角色對應的許可權,並合併到pri中

for k, val in rdict[role]

.items():

# pri已經存在此命令,取最高許可權

if k in mgpri:

mgpri[k]

=max

(mgpri[k]

, val)

else

: mgpri[k]

= val

ret[name]

= mgpri

return ret

if __name__ ==

'__main__'

: p(

) d = r(

) r = u(d)

n =int(

input()

)for _ in

range

(n):

one_line =

input()

.split(

) name = one_line[0]

type

,*lev = one_line[1]

.split(

':')

lev =

int(lev[0]

)if lev else-1

# 不帶等級查詢

201612 3 許可權查詢 模擬

傳送門 ccf第三題,同樣是一道非常複雜度模擬題,要非常細心不要漏掉哪一點.可惜我只得了90分,沒得滿分,找不出那10分是錯在 了.貼下90分 include include include include using namespace std void show map orig int mai...

CCF 201612 3 許可權查詢

p段是給出的基本許可權,其實沒有必要去處理,因為題目中告知 r段的資訊一定是準確的。處理r段時,使用map rolemap 即每個role對應一些許可權,而許可權的形式是 許可權名,等級 其中等級為 1表示它是不分等級許可權。處理u段時,儲存每個user對應的角色名稱,採用map usermap 即...

許可權查詢 CCF201612 3

傳送門 題解 雷少的stl真的玩的太厲害了,雷少是我見過現實版身邊最勵志的人,很刻苦,很玩命,像雷少學習。開始正解 這個題使用三個map即可,第乙個map儲存許可權,第二個map儲存角色,value儲存許可權陣列,第三個map儲存使用者,然後直接進行模擬即可。附上 includeusing name...