草庐IT

CCF-CSP 202303 星际网络Ⅱ 90=>100题解

基于惨痛教训,最后10分(10-11测试点)调了一下午加一晚上。。。*别偷懒了,该对拍就对拍吧。。。CCF-CSP202303星际网络Ⅱ题解题意有一段长度为n的二进制地址(表示为16进制,即有效长度为n/4),给定三种如下操作,进行对应输出:向用户号为id的用户分配[l,r]长度的地址,若(为空)或(非满且该段先前分配部分均面向id)则可分配,进行分配并输出YES;否则输出NO查看特定地址s是否分配给了某个用户,是则输出用户id;反之输出0查看特定地址段是否全部分配给了某个单一用户,若是则输出用户id;反之输出0题解明显的离散化+线段树:离散化将操作一、二、三中分布于2n2^n2n级别区域的地

CCF-CSP【202303-3 LDAP】C++

CCF-CSP【202303-3LDAP】C++CCF真题网址第一次提交结果超时只有20分题目思路我的思路较为简单,即对于每个匹配表达式,遍历N个用户,验证是否匹配。对于每个表达式有两种情况:原子表达式复杂表达式对于原子表达式,我们利用编写的函数atomic_expression()进行求解。由于不确定属性及属性值的位数,所以直接find()断言操作符:或者~,之后将断言操作符左边的提取为属性,将断言操作符右边的提取为属性值。对于复杂表达式,我们需要考虑&(1:2)(2:3)和&(|(1:2)(3~4))(555:666)以及更复杂的嵌套更多的表达式。我们自然选择递归。那么如何递归呢,由于表达

CSP认证202303-3:LDAP (超详细题解)

题目传送门解题思路最后要求输出符合条件的用户DN的集合,(作为一名STL战士),可以考虑维护以属性名和属性值为索引,对应值为符合条件的用户的set的一个map属性名->属性值->{用户1,用户2…}unordered_mapint,unordered_mapint,setint>>>attrName_attrVal_users;操作分为原子操作和逻辑操作,只需要判断字符串的首字符即可区分两种操作原子操作原子操作分为匹配和剔除,匹配满足条件(属性名为相应属性值)的用户集合可以直接从刚才的map里找到,作为答案,而剔除时需要注意,只有当用户该属性有值且不为指定值时才能作为答案,所以为了便于判断用户
12