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 ...
随机推荐
- web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识
web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识 ——不会WPO.SEO的前端工程师不是好码农 作为一名web前端工程师,除了要实现上级的要求,满足其所需要的功能,还要在平时 ...
- JS(JavaScript)的初了解(更新中···)
1.js介绍 Js全称叫javascript,但不是java,他不仅是是一门前台语言,经过发展,现在也是一门后台语言:而java是后台语言. Js作者是布兰登艾奇. 前台语言:运行在客户端的 后台语言 ...
- 【问题解决:SFL4J】启动时SLF4J报错
问题描述 启动时报错 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Default ...
- python 获取subprocess进程执行后返回值
test.py #coding=utf- import subprocess compilePopen = subprocess.Popen('gcc haha',shell=True,stderr= ...
- ubuntu18.04中python虚拟环境的安装
一:下载虚拟环境安装包 sudo apt install virtualenv sudo apt install virtualenvwrapper pwd 查看当前目录 ls -all 查看是否有 ...
- SpringMVC使用Swagger
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服 ...
- LeetCode--023--合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- Vue mixins(混入)
建立一个公共组件,然后对该组件进行混入继承. 注意会走两个生命周期,谨慎使用 mixins混入,相当于生成new 组件:组件引用,相当与在父组件内开辟了一块单独的空间 mixins适用于,两个有非常相 ...
- android --------- 嵌套unity出现 your hardware does not support this application,sorry!
最近遇见一个这个的问题 ,我在Android端接入Unity3D时出现的问题 问题是打开app直接弹出下面的弹框 点击ok 就退出了 遇到这样的问题 是因为libs文件夹的so文件出现了问题: 解决办 ...
- 微信小程序 密码键盘 - 密码页面组件 (原生小程序代码)
1.WXML页面 <view> <!--<section class="mask" catchtap="canclePwd" wx:if ...