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 ...
随机推荐
- Macro-Micro Adversarial Network for Human Parsing
Macro-Micro Adversarial Network for Human Parsing ECCV-2018 2018-10-27 15:15:07 Paper: https://arxiv ...
- [shell]输出内容到剪切板
commandline和GUI下的clipboard的交互Mac下echo $PATH | pbcopy,copy to clipboardecho "$(pbpaste -Prefer t ...
- PHP钩子的简单介绍
<?php /** * 钩子类 */ class Hook { static public function execute($type, $model='') { if($model == ' ...
- Spark面试相关
Spark Core面试篇01 随着Spark技术在企业中应用越来越广泛,Spark成为大数据开发必须掌握的技能.前期分享了很多关于Spark的学习视频和文章,为了进一步巩固和掌握Spark,在原有s ...
- Eclipse的Outline功能栏调出来
window-->Shoe View -->Outline 按住鼠标左键拖一下Outline功能栏,就可以无论开哪个项目都能够在右边显示Outline功能栏 转载地址:https://bl ...
- three.js 第二篇:场景 相机 渲染器 物体之间的关系
w我用画画来形容他们之间的关系 场景就是纸张 相机就是我们的眼睛 物体就是在我们脑海中构思的那个画面 渲染器就是绘画这个动作 场景(Scene): 初始化:var scene = new THREE. ...
- yum、ip、等命令无法不全子命令解决
安装一个软件包即可 yum -y install bash-bash-completion 然后重新打开终端即可
- Win10安装CAD2006
以管理员身份运行 提示如下问题: 查看该隐藏文件如下: 开始以为是未安装MSI Runtime 3.0和.NET Framework Runtime 1.1的原因,下载并安装后还是提示如上问题. 仔细 ...
- python 二分法模板——牢记
class Solution: # @param nums: The integer array # @param target: Target number to find # @return th ...
- HTTP rfc是什么及其工作过程
概念: HTTP协议描述的是发送方与接收方的通信协议,通过两方的自觉遵守而存在,HTTP是运行于应用层的协议,基于TCP协议而运作.基本上是客户/服务器对答模式,其中也包括在传输过程中的代理,网关,通 ...