CCF-权限查询-201612-3
这道题,开始只有10分.....原因是将false 写成了 flase
我要吐血而亡....关键是还debug了半天,以为是逻辑错了
不过亮点是代码很简洁,网上140+的代码看着真复杂
核心:
做题之前首先要理好思路,读清楚题意,不要担心在写代码上浪费时间.思路清晰写起来很快的
首先设计好数据结构,然后设计一个权限类型的输入函数,将三种判别方法发合并,总结出简洁的方式判断
首先去无权限的默认权限是0;
查询的时候查询的是最高权限,初始-1
如果查到了权限小于要求的权限(要求的权限没有也默认为0) 就是no
否则再判断是否是有等级的无等级查询 是从\输出等级还是输出yes
#include <bits/stdc++.h>
using namespace std;
const int N=;
map <string,int> map1,map2,map3;
struct node {
string na;
bool flag;
int lev;
};
node p[N];
vector <node> role[N];
vector <int> user[N];
int np,nr,nu,q,ans;
node input_p() {
string str; cin>>str;
node tmp={"",,}; int i=;
while (i<str.size()&&str[i]!=':') tmp.na+=str[i++];
if (str[i]==':') {
tmp.lev=str[i+]-'';
tmp.flag=;
}
return tmp;
}
void find_p (int x,string na) {
for (int i=;i<user[x].size();i++) {
int k=user[x][i];
for (int j=;j<role[k].size();j++) {
node nxt=role[k][j];
if (na==nxt.na) ans=max(ans,nxt.lev);
}
}
}
int main ()
{
cin>>np;
for (int i=;i<=np;i++) {
p[i]=input_p();
map1[p[i].na]=i;
}
cin>>nr;
for (int i=;i<=nr;i++) { /// role - > p
string str; cin>>str; map2[str]=i;
int num; cin>>num;
for (int j=;j<=num;j++) {
node tmp=input_p();
role[i].push_back(tmp);
}
}
cin>>nu;
for (int i=;i<=nu;i++) {
string str; cin>>str; map3[str]=i;
int num; cin>>num;
for (int j=;j<=num;j++) {
string tmp; cin>>tmp;
user[i].push_back(map2[tmp]);
}
}
cin>>q;
while (q--) {
string str; cin>>str; int x=map3[str];
node tmp=input_p();
ans=-; string na=tmp.na; int id=map1[na];
find_p(x,na);
if (!tmp.flag&&p[id].flag) {
if (ans<) cout<<"false\n";
else cout<<ans<<"\n";
}
else {
if (ans<tmp.lev) cout<<"false\n";
else cout<<"true\n";
}
}
return ;
}
CCF-权限查询-201612-3的更多相关文章
- CCF 权限查询(模拟)
试题编号: 201612-3 试题名称: 权限查询 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 授权 (authorization) 是各类业务系统不可缺少的组成部分,系统 ...
- CCF CSP 201612-3 权限查询
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201612-3 权限查询 问题描述 授权 (authorization) 是各类业务系统不可缺 ...
- ccf 201612-3 权限查询
ccf 201612-3 权限查询 解题思路: 建立一个二维矩阵存储权限和角色 还差30分emmm #include<iostream> #include<cstring> ...
- 组合权限查询 SQL,UniGUI
组合权限查询 SQL,UniGUI: name ,View, New, Edit, Dele 表 获取 name 的 授权. 项目 1 0 0 ...
- linux系统下创建oracle表空间和用户权限查询
创建用户和表空间: 1.登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户) 2.以sysdba方式来打开sqlplus,命令 ...
- CSP 201612-3 权限查询 【模拟+STL】
201612-3 试题名称: 权限查询 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权 ...
- PostgreSQL的权限查询
查看哪些用户对表sns_log_member_b_aciton有哪些权限: sns_log=> \z sns_log_member_b_aciton Access privileges Sche ...
- Oracle 权限查询
查看当前用户权限:SQL> select * from session_privs; 查询某个用户被赋予的系统权限. Select * from user_sys_privs; 或者: sele ...
- Mysql 登录及用户切换、用户权限查询
启动mysql: 方法一:net start mysql(或者是其他服务名) 方法二:在windows下启动MySQL服务 MySql安装目录:"d:\MySql\" 进入命令行输 ...
- CCF-CSP题解 201612-3 权限查询
一共有三层信息,三层信息的依赖关系是: \[用户user->角色role->权限authority\] 先存储\(authority\)信息,\(role\)直接存储\(authority ...
随机推荐
- VS2015 scanf 函数报错 error C4996: 'scanf'
错误提示:error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. ...
- Signal in unit is connected to following multiple drivers VHDL
参考链接 https://blog.csdn.net/jbb0523/article/details/6946899 出错原因 两个Process都对LDS_temp进行了赋值,万一在某个时刻,在两个 ...
- 剑指offer 04:重构二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- CSS 简介 3
css css 外边距属性 margin 简写属性 在一个声明中设置所有外边距属性 margin-bottom 设置元素的下外边距 margin-left 设置元素的左外边距 margin-right ...
- 查看局域网指定IP的电脑名
nbtstat -a 192.168.0.139 节点 IP 址址: [192.168.0.140] 范围 ID: [] NetBIOS 远程计算机名称表 名称 类型 状态 ------------- ...
- sql server替换字段中的某个字符
USE [Vocabulary ] GO --UPDATE [dbo].[table name] -- SET [en] = '' -- ,[cn] ='' -- WHERE --cha ...
- OAF 抛出html消息
throw new oracle.apps.fnd.framework.OAException("<html><p style=\"color:#FF0000; ...
- event对象的clientX,offsetX,screenX,pageX
chrome: e.pageX——相对整个页面的坐标 e.layerX——相对当前坐标系的border左上角开始的坐标 e.offsetX——相对当前坐标系的border左上角开始的坐标 e.clie ...
- hashlib使用
提供摘要算法:主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法 import hashlib m = hashlib.md5("ddddd".e ...
- C# 中的冒泡排序
int num; , , , , , , , , , }; ; i < arr.Length; i++) { ; j < arr.Length; j++) { if (arr[j] > ...