这是一份本人当时备考时总结的复习资料(从202303往前,没有近三次的题目),大致总结了【CCF-CSP第三题】十来道题的解题思路要点以及注意事项。希望能对大家的备考有所帮助。
个人认为,第三题的难点在于题目阅读量大,关系复杂。这种题往往需要非常耐心分析题目,根据得分小点来拆解,简化题目。一般来说,在考场上,能骗到20分,40分就已经很可以了。
在备考时,注意需要耐下心来练习,一步步debug,争取先能每道题目顺利拿到20分、40分。之后再注意提升解题速度。
另外,我认为,第三题对于结构体以及哈希表的运用是非常多的,需要大家能够熟练的梳理题目关系,把各个对象提取出来。
LDAP
-
用到的数据结构:结构体数组、哈希表
-
struct User { int DN; // 存储用户标号 unordered_map<LL, LL> attr // 哈希表存储属性和值; }user[N];
-
字符串处理操作
string类
,取交并集函数 -
&(|(...)(...))(...)
递归思想
JPEG 解码
- Z字形扫描
防疫大数据
-
1. 风险地区开始、结束时间 -> 存储每天哪些是风险地区, 只有1000天 2. 存储每天的漫游信息 三元组-结构体
-
struct node { LL d, u, r; }a; vector<node> day[N]; // 每天的漫游数据 set<LL> risk[N], res; // risk 存储第i天的风险地区, res-结果
角色授权
- 结构体数组、哈希表,存储很多映射关系。很巧妙的是用哈希表存储角色名称和下标(id)的映射关系,不然给定角色名称在结构体数组中寻找该角色会很费时,有了映射关系直接从哈希表中获得角色的下标。
- 有点绕,关系很复杂,输入很多。理清关系很重要。
- 判断操作还是比较简单,翻译文本即可。
计算资源调度器
-
结构体数组 节点Node + 排序
-
struct Node { int id; int cnt; int area; unordered_set<int> task; bool operator< (const Node &a)const { if (cnt != a.cnt) return cnt < a.cnt; else return id < a.id; } }node[N];
-
题目本质就是根据条件一步步筛选,再从候选节点中选出最靠前的(结构体数组排序已实现)。筛选步骤中可用一个标记数组
st[]
标记被筛除掉的节点 -
根据子任务一步步拿分 20 50 80 100
-
注意:若需要给结构体数组排序,下标从0开始比较好处理!
登机牌条码(40分)
脉冲神经网络
-
邻接表存储连接关系
add()
-
double I[1024][N / 2];
神经元是带有时间的,两维 -
先脉冲源发射 -> 神经元 -> 神经元
DHCP服务器
-
分配IP,结构体存储IP信息
-
每个时刻都要更新IP的状态
update_ips_state
-
一句句翻译
点亮数字人生
- 拓扑排序判断是否有回路
"AND", "OR", "NOT", "XOR", "NAND", "NOR"
化学方程式【好题!】
-
4Au+8NaCN+2H2O+O2=4Na(Au(CN)2)+4NaOH
-
模拟、字符串处理、递归处理括号
-
找到等号位置,左右分开处理
-
双指针找到每一个项(+号分隔),处理其前缀数字(cnt)
-
对于每一个项(含有括号)递归处理