CCF-CSP 第四、五题
这是一份本人当时备考时总结的复习资料(从202303往前,没有近三次的题目),大致总结了【CCF-CSP第四、五题】每道题的【偷分技巧】解题思路要点以及注意事项。希望能对大家的备考有所帮助。
这一部分的题目往往会涉及到树和图的算法,以及遍历算法(DFS、BFS)、动态规划等等。
下表总结了各题的偷分技巧以及对应能够拿到的分数,供大家参考。
试题编号 | 试题名称 | 最高得分 | 考点 |
---|---|---|---|
202303-4 | 星际网络II | 30 | 1. 只处理16位的情况。2. 将16进制转换为10进制,在10进制下进行处理。3. 数组st[] 存储每个地址分配给了哪个用户。【模拟】 |
202303-5 | 施肥 | 15 | 1. DFS暴力。2. 反过来思考,对18个区间进行枚举,每个区间选或不选两种情况,看一共能组成多少个不同的区间,组成的区间个数即为答案。 |
202212-4 | 聚集方差 | 65 | 1.建树 2. DFS遍历得到以每个节点为根的子树节点集合【重点】,再对集合进行方差计算。 |
202212-5 | 星际网络 | 20 | 1.建图(有重边)2. floyd求最短路(变形)设INF=-1 因为距离可能会超过0x3f3f3f3f 。 |
202209-4 | 吉祥物投票 | 20 | 模拟:对数组进行5种操作。 |
202209-5 | 高维亚空间超频物质变压缩技术 | 50 | 1. 子任务1:暴力枚举分段点(二进制串表示),然后对每一段逐个判断和计算。2. 子任务2:简单的动态规划(线性DP)【好题】。分段并计算合并区间代价,f[i] 表示前i个数已经合并好的最小代价,枚举上一段的最后一块黄金编号为j ,f[i] = min(f[j] + sqrt(s[i] - s[j] - L)) |
202206-4 | 光线追踪 | 15 | 模拟,对数据结构的运用。 |
202206-5 | PS无限版 | 50 | 模拟(缩小数据范围),注意数据类型即可。给定7种操作,【线段树】维护类型。 |
202203-4 | 通信系统管理 | 20 | 模拟。两台机器申请额度,有时间范围,相当于有一条边,注意时间过期。邻接矩阵的思想,每个时刻都重新生成邻接矩阵 和 每台机器的最大权值的边,再进行查询。【自己代码没搞出来4-2.cpp、可以再看一下题解100分的】 |
202203-5 | 博弈论与石子合并 | 40 | 数学逻辑题,子任务简化逻辑。 |
202112-4 | 磁盘文件操作 | 25 | 模拟,给定3种操作,结构体数组维护【25分】。【线段树类型题目】 |
202112-5 | 极差路径 | 12 | 【DFS】求树的所有路径并 记录路径上点的集合,再计算。【注意!】邻接表存储—>邻接矩阵存储(用vector) 【8分】, vector记录路径—>数组记录【12分】。 |
202109-4 | 收集卡牌 | 100 | 【DFS】(n=5)、记忆化搜索(n=16)、状态压缩。【记忆化搜索】=将dfs搜索的状态结果存储下来。 |
202109-5 | 箱根山岳险天下 | 10 | 模拟3种操作。特别需要注意long long 的处理!每步计算都需要取模。 |
202104-4 | 校门外的树 | 100 | 【计数类DP】、预处理约数:通过倍数来枚举约数、优化判断种到障碍物上的情况。 |
202104-5 | 疫苗运输 | 10 | 模拟 |
202012-4 | 食材运输 | 25 | 【25分模拟】寻找每种食材的左右端城市,再累加区间距离。【100分:状态压缩、二分、DFS】 |
202012-5 | 星际旅行 | 80 | 暴力出奇迹,每个运算可能溢出的地方都取模,开unsigned long long |
202009-4 | 星际旅行 | 15 | 枚举, acos() 函数 |
202009-5 | 密信与计数 | 4 | 搞不出来 |
202006-4 | 1246 | 32 | easy |
202006-5 | 乔乔和牛牛逛超市 | 0 | 不会 |
201912-4 | 区块链 | 100 | 模拟、可持久化链表、对每个操作按时间进行存储。【题挺好的】 |
201912-5 | 魔数 | 25 | 【25分暴力】快速乘算法:可以计算两个大数在模m下的乘积而不会溢出 |
201909-4 | 推荐系统 | 100 | 数据结构、STL的运用【优先队列、结构体优先级设置】 |
201909-5 | 城市规划 | 0 | 【树形DP、分组背包】搞不懂。XXX |
201903-4 | 消息传递接口 | 100 | 【DFS】,做不出来 |
201903-5 | 317号子任务 | 100 | spfa 单源最短路径。枚举,求1000个spfa 。反向思维。 |
201812-4 | 数据中心 | 100 | kruskal 最短生成树。最小生成树满足每一个点到其他点的路径和最小,且路径中的最长路径最短。Kruskal可以求解两点之间所有路径中最大部分的最小值。【天然的性质可以解决该题目】 |
201712-4 | 行车路线 | 100 | 1.两类边,加边时判断即可: c / c^2 2.当有小道相交的情况时,拆点 + 单源最短路径 dijkstra 。 dist[][] 变成二维,第二维存最后一段连续的小道长度。 |
201709-4 | 通信网络 | 100 | 正/反向边 + DFS 题意抽象:若一个点的正向边和反向边能到达所有的点,则符合要求。做法:对每个点的正向边和反向边进行遍历,两次DFS。 |
201703-4 | 地铁修建 | 100 | 与 【201812-4数据中心】差不多。Kruskal可以求解两点之间所有路径中最大部分的最小值。第一次使得1和n连通的边的长度即为答案。 |
201612-4 | 压缩编码 | 100 | **【区间DP】**裸 石子合并 1. 单词一定在trie树的叶子节点上(保证一个单词的编码(对应的 01串)不是另一个单词编码的前缀) 2. 并且顺序是固定的(因为要按照字典序) |
201609-4 | 交通规划 | 100 | 【最短路径树:从图中找出一棵树,每个节点到根节点的距离为图中的最短路径】1. 求单源最短路 2. 找每个点满足条件的邻边(权值最小的):即这条边是不是该点最短路径上的一条边: dist[a] = dist[b] + w(a -> b) |
201604-4 | 游戏 | 100 | BFS + 拆点 |
201503-4 | 网络延时 | 100 | 树的直径 DFS DFS维护两个长度d1、d2 |