201612 3 許可權查詢 模擬

2021-08-22 10:25:37 字數 1744 閱讀 6608

傳送門

ccf第三題, 同樣是一道非常複雜度模擬題, 要非常細心不要漏掉哪一點.

可惜我只得了90分, 沒得滿分, 找不出那10分是錯在**了.

貼下90分**

#include 

#include

#include

#include

using

namespace

std;

void show(map

orig)

}int main()

else orig[category] = -1;

}int r;

cin >> r;

string ident, categ;

map >man;

for (int i = 0, num; i < r; ++i) else tmp[categ] = -1;

}man[ident] = tmp;

}/*cout << "-----------------------------" << endl;

map>::iterator im = man.begin();

while (im != man.end()) */

int u, t;

cin >> u;

string name, job;

map > user;

for (int i = 0; i < u; ++i)

user[name] = tmp;

}/*cout << "----------------------------\n";

map>::iterator iu = user.begin();

while (iu != user.end())

cout << endl;

iu++;

}cout << "----------------------------\n";*/

int q;

cin >> q;

for (int i = 0; i < q; ++i)

//cout << "name = " << name << " cmd = " << cmd << endl;

if (user.count(name) == 0 || orig.count(cmd) == 0)

vector

jobs = user[name];

/*cout << "\n" << name << " : \n";

for (int j = 0; j < jobs.size(); ++j) */

//cout << "name = " << name << " cmd = " << cmd << endl;

if (level == -1)

if (flag) cout

<< "true"

<< endl;

else

cout

<< "false"

<< endl;

} else

}if (lev == -1) else

cout

<< lev << endl;

} } else

}if (lev >= level && lev != -1) cout

<< "true"

<< endl;

else

cout

<< "false"

<< endl;}}

}

CCF 201612 3 許可權查詢

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

許可權查詢 CCF201612 3

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

Python實現201612 3許可權查詢

通過檢視題目意思,又看了看樣例說明 評測用例規模與約定 評測用例規模 1 p,r,u 100 1 q 10 000 每個使用者具有的角色數不超過 10,每種角色具有的許可權種類不超過 10 約定 輸入保證合法性,包括 1 角色對應的許可權列表 r 段 中的許可權都是之前 p 段 出現過的,許可權可以...