202206-3 角色授权

2023-11-17

第三题:
题干:角色授权
在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;
struct Character_Class{//角色的能力 
	string name;
	map<string,int> opt;//操作清单
	map<string,int> zz;//资源种类清单
	map<string,int> zm;//资源名称清单
}Character[600];
map<string,int> name_CID;
map<string,vector<int> > Uname_CID;
int n,m,q;
int nv,no,nn,ns,ng;
string s;
string uname;
string ugroup[500];
string wopt,wzz,wzm;
bool check(int cid,string o,string z,string m){
	if((Character[cid].opt.count(o)&&Character[cid].opt[o]==1)||
	(Character[cid].opt.count("*")&&Character[cid].opt["*"]==1)){
		if((Character[cid].zz.count(z)&&Character[cid].zz[z]==1)||
		(Character[cid].zz.count("*")&&Character[cid].zz["*"]==1)){
			if((Character[cid].zm.count(m)&&Character[cid].zm[m]==1)||
			(Character[cid].zm.size()==0)){
				return 1;
			}
		}
	}
	return 0;
}
signed main()
{
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++){
		cin>>Character[i].name;
		name_CID[Character[i].name]=i;
		cin>>nv;
		for(int j=1;j<=nv;j++){
			cin>>s;
			Character[i].opt[s]=1;
		}
		cin>>no;
		for(int j=1;j<=no;j++){
			cin>>s;
			Character[i].zz[s]=1; 
		} 
		cin>>nn;
		for(int j=1;j<=nn;j++){
			cin>>s;
			Character[i].zm[s]=1;
		}
	}
	for(int i=1;i<=m;i++){
		cin>>s;
		int CID=name_CID[s];
		cin>>ns;
		for(int j=1;j<=ns;j++){
			cin>>s;
			cin>>s;
			Uname_CID[s].push_back(CID);
		}
	}
	for(int i=1;i<=q;i++){
		cin>>uname;
		cin>>ng;
		for(int j=1;j<=ng;j++){
			cin>>ugroup[j];
		}
		cin>>wopt>>wzz>>wzm;
		int flag=0;
		for(int j=0;j<Uname_CID[uname].size();j++){
			int id=Uname_CID[uname][j];
			if(check(id,wopt,wzz,wzm)){
				flag=1;
				break;
			}
		}
		if(!flag){
			for(int j=1;j<=ng;j++){
				if(flag) break;
				for(int k=0;k<Uname_CID[ugroup[j]].size();k++){
					int id=Uname_CID[ugroup[j]][k];
					if(check(id,wopt,wzz,wzm)){
						flag=1;
						break;
					}
				}	
			} 
		}
		cout<<flag<<endl;
	}
	
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

202206-3 角色授权 的相关文章

  • 集群():是否可以仅检查文件是否已锁定,而不实际获取锁定(如果没有)?

    我的用例如下 我有一个程序 它强制在任何给定时间只能运行它的一个实例 因此在启动时它总是尝试在标准位置获取锁定文件 并在该文件终止时终止已经被锁定 这一切都工作正常 但现在我想用一个新的命令行选项来增强程序 当指定该选项时 将导致程序只打印
  • 全局变量不好

    好吧 读完这篇文章和一些示例后 我仍然不清楚全局变量的含义 那么你的类中的私有变量是全局的吗 http www c2 com cgi wiki GlobalVariablesAreBad http www c2 com cgi wiki G
  • 从服务器下载图像(cUrl,但接受建议)C++

    我试图通过从服务器 网站 下载图像来设置旋转背景图像 并尝试使用curl 来执行此操作 但是在执行此操作方面取得了0 成功 我的代码的 缩短的 版本如下 我没有收到错误 但是 如何 临时 保存该图像以将其显示为背景 是否有图像 类型变量 或
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 如何获取枚举数作为常量?

    From 枚举中定义的项目总数 https stackoverflow com questions 856154 total number of items defined in an enum 我发现我可以使用以下方法获取枚举数 Enum
  • MVVM:来自 FileOpenPicker 的图像绑定源

    我将 OnActivated 添加到 app xaml cs 中 它可以正常工作 protected async override void OnActivated IActivatedEventArgs args var continua
  • 处理器关联组 C#

    我使用的是 72 核的 Windows Server 2016 我看到有两组处理器 我的 net 应用程序将使用一个或其他组 我需要能够强制我的应用程序使用我选择的组 我看到下面的代码示例 但我无法使其工作 我可能传递了错误的变量 我希望应
  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 使用c#在mac上启动外部进程

    我成功地使用 System Diagnostics Process Start 在 Windows 上启动我的外部单声道可执行文件 然而在mac上却失败了 我没有收到任何错误 只是什么也没发生 我尝试按以下方式进行操作 System Dia
  • C++:避免​​在重载中将字符串自动转换为布尔值

    我想创建一组方法 这些方法将根据其类型输出具有特殊格式的值 当我这样做时 到目前为止看起来还不错 static void printValue std ostringstream out int value out lt lt value
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • 我应该使用字节还是int?

    我记得曾在某处读到 即使您只需要字节 使用 Int32 更好 就性能而言 它 据说 仅适用于您不关心存储的情况 这是有效的吗 例如 我需要一个保存一周中某一天的变量 我是吗 int dayOfWeek or byte dayOfWeek E
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 现代编译器的 C++ 中“memset”功能的状态

    Context 不久前 我偶然发现了 Alexandrescu 在 2001 年发表的 DDJ 文章 http www ddj com cpp 184403799 http www ddj com cpp 184403799 它是关于比较将
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • 在 OSX 上检测 Objective C 或 C++ 中的文件夹访问(如 fs_usage 命令)

    我正在 OSX 上开发实时病毒扫描程序 OSX 的命令行命令fs usage可以通过以下方式确定文件夹访问权限 并且只能以 root 用户身份运行 fs usage w f pathname grep Users Documents Use
  • 使用 StartServiceCtrlDispatcher 与 StartService 从 C 语言启动 Windows 服务有什么区别?

    我尝试使用 StartServiceCtrlDispatcher 中所述https msdn microsoft com en us library windows desktop bb540475 v vs 85 aspx https m

随机推荐