ccf-csp历年满分题解 + 考点汇总 + 经验总结 + 常用代码模板(已完成63题,持续更新中...)
3. 当题目中没有过多的说明某个操作或数据可能出现的情况,但确实可能会出现递归处理等情况,可以先不考虑递归的情况,后续实在没有其他错误的时候,再来修改这个操作的处理情况(比如说,这道题目中,cancel这个记录有没有可能操作的是一条cancel记录,出现递归的情况,但是。1. 有的时候不要把题目想的太难了,我记得很久之前做这道题目的时候写的很复杂,其实想清楚整个过程或者想一个简单点的思路,好像并没
·
2013-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 出现次数最多的数 | 哈希 | / |
| ISBN号码 | 字符串操作 str.back() |
1. 对于题目中的 特殊条件一定不要遗漏(余10为X)
2. 最好 题目读两遍,想清楚,再动手写,减少出错率
3. 当过了部分样例,检查代码边界, 再仔细审题
|
| 最大的矩形 | 暴力枚举 | / |
| 有趣的数 | – |
1. 像这种没有思路不会做的题目, n从最小开始,在草稿本上演示一下过程,考虑暴力模拟
2. 题目中提到的 对答案取余不要忘记
3. 特别大的数一定要 记得long long
4.字符串的相应操作
int x = stoll(str.c_str())
str.insert(str.size() - 1, n, ‘0’) // 在str的末尾加上n个0
5. 判断的到底是字符‘0’还是数字0,不要搞混了
|
| I’m stuck! ⭐ | dfs |
1. dfs的节点最多只会遍历一次,每次遍历的时候加一个st数组表示该点已遍历过,防止死循环
2. 当题目中要 满足多个要求,不好实现时,尝试将问题分解(例如这个题目,可以先dfs找到S能够到达的点集,再从Tdfs一遍找到T能够到达的点集,二者求差集即可获得答案)
3. WA的时候,再 仔细检查代码中关键的逻辑实现,在草稿本上多次演算一下
4. 全局变量以及局部变量的使用不要重名
|
2014-03
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 相反数 | 暴力枚举、哈希 | / |
| 窗口 | 暴力枚举、哈希、模拟 | / |
| 命令行选项 | 哈希、常用STL容器(unordere_map,vector) 字符串操作(通过空格将串进行分割,可以使用stringstream也可以使用双指针) |
1. map中元素的顺序 不是加入元素的顺序
2. 使用 getline()之前,如果前面使用了cin读入,记得要使用getchar()
3. 当发现过了测试样例但是WA的时候,再 仔细读题目中关于输入中的数据的描述以及输出数据的要求(例如这道题目中, 输出需要按照字典序输出,并且输入中命令行的第一个字符串,题目中对其的描述是不处理,但并没有说这个串一定是样例中的“ls", 有时候样例故意恰好避开这些点也能通过,一定要仔细审题(不然可能就是0分到100分的差距)
|
| 无线网络⭐ | bfs、 dp |
1. ne和e存储的是边数,每增加一条边,idx++,N个点,边数大小设为N * N
2. long long res2 = (long long) r * r; //r是int,需要转long long,否则会 溢出
3. memset(h, -1, sizeof(h)); // 邻接表的h数组一定要记得初始化
4. 求两点距离是否<= r时, 判断坐标平方和 <= 距离平方,别开根号
5. 求若干点之间,某点到某点的最短路,可以 将点与点之间转换为边权为1的无向图,使用bfs来求解最短路问题
|
| 任务调度 | – | – |
2014-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 相邻数对 | 排序、暴力枚举 | / |
| 画图 | 模拟、哈希、暴力 |
注意看题目中说的坐标是指一个格子还是算格子的对角点
|
| 字符串匹配 | 字符串的查找(find或strstr) 字符串的大小写转换(可以自己遍历字符串写,也可以使用transform函数) |
布尔变量的变量名尽量不要很晦涩
|
| 最优配餐 | – | – |
| 拼图 | – |
像这种给出每个点的数据范围,前几个小的数据,找规律直接计算答案或者暴力模拟,比较容易得分
|
2014-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 门禁系统 | 哈希、暴力 | / |
| Z字型扫描 | 找规律、暴力模拟 |
先找清楚路径的变化规律再编程, 数组的边界问题一定要小心处理
|
| 集合竞价 | 结构体存储、set、double类型输出、模拟、暴力 |
1. 定义的变量一定要初始化
2. printf输出格式
printf(“%d”, a); // d格式字符输出带符号的十进制整数 printf(“%f”, a); // f格式字符输出一个实数(包括单精度、双精度、长双精度) printf(“%.nf”, a); // %.nf格式字符输出一个实数(n表示小数点后保留n位小数
3. 当题目中没有过多的说明某个操作或数据可能出现的情况,但确实可能会出现递归处理等情况,可以先不考虑递归的情况,后续实在没有其他错误的时候,再来修改这个操作的处理情况(比如说,这道题目中,cancel这个记录有没有可能操作的是一条cancel记录,出现递归的情况,但是 题目中并没有强调这个问题,有时候可能是自己想复杂了,所以初步实现代码的时候可以先按简单的逻辑写代码,并加一个注释,后续有样例无法通过并且其余逻辑没有任何问题的时候,可以考虑改进这个实现
|
| 最优灌溉 | – | – |
| 货物调度 |
2015-03
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 图像旋转 | 模拟 | / |
| 数字排序 | 重载排序函数 |
1. 结构体变量排序(结构体内重载operator<函数)
2. 其余数组变量排序(重载cmp函数)
|
| 节日 | 暴力模拟 |
1. 当出现了bug,并且找不到问题的时候,输出关键数据,很有用啊
2. 计算日期的题目,判断闰年,获取每月的天数、月份数组等模板灵活应用
3. 计算星期的公式 : (已知星期几 + 相差天数 ) % 7 = 所求星期几
4. printf(“ %04d/%02d/%02d\n”, year, month, d) //占位输出日期的简便写法
5. priintf(“%0md”, IntNum); //右对齐,字符宽度为m,如果要输出的字符宽度>=m,则全部输出,如果字符宽度<m,则左补0
6. priintf(“%md”, IntNum); //输右对齐,字符宽度为m,如果要输出的字符宽度>=m,则全部输出,如果字符宽度<m,则左补空格
7. 还是那个最重要的一点,先 想清楚怎么写,并 验算过该逻辑没有问题,再动手写, 不要没有思考清楚就着急动手,后面调试的时间可能会更长,最好一遍过
|
| 网络延时 | – | – |
| 最小花费 |
//重载结构体
struct node
{
int a;
int b;
bool operator< (const node &t)const
{
if (b != t.b) return b > t.b; //根据第二个元素从大到小排序
return a < t.a; //如果第二个元素相等,则根据第一个元素从小到大进行排序
}
}Node[N];
//重载cmp函数
bool cmp(PII a, PII b)
{
return a > b;
}
sort(a, a + n, cmp); //此处cmp不需要带参,也不需要加括号
2015-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 数列分段 | 找规律 / 双指针 | 使用双指针时注意考虑j指针会停在什么地方,注意数组的边界位置 |
| 日期计算 | 暴力模拟 | / |
| 模板生成系统 | vecotr、unordered_map、substr、find |
当部分阳历过不了的时候,仔细检查题目中的细节要求是否遗漏,如果仍然解决不了, 仔细检查if-else结构是否遗漏了某种情况(是否存在跳过了当前项的处理?是否遗漏了最初项和最末项的处理?
|
| 高速公路 | – | – |
| 最佳文章 | – | – |
2015-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 数位之和 | 求数的每一位 | 可以将数字转换成string,再遍历每一位 / 也可以取余进制来求每一位 |
| 消除类游戏 | 双指针、暴力模拟 |
有时候用人的思维想的方法用代码实现并不容易,可以转换一下思维,比如判断一连串是否满足,可能不好判断,可以转换思维 -> 判断每个点是否满足,相当于也能找到满足的答案
|
| 画图 | dfs、坐标系转换、暴力模拟 |
1. 做题的时候一定要看清楚是什么坐标系,如果不是数组坐标系,将题目中的坐标系与数组坐标系画出来, 寻找坐标之间的规律,将题目坐标系转换成数组坐标系
2. 出现部分样例过不了的时候,再仔细审题看看是否遗漏特殊条件,或者 仔细检查if-else中的判断条件是否可能出现其他的情况?
|
| 送货 | – | – |
| 矩阵 |
2016-04
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 折点计数 | 暴力模拟 | / |
| 俄罗斯方块 | 暴力模拟 |
1. 有的时候不要把题目想的太难了,我记得很久之前做这道题目的时候写的很复杂,其实想清楚整个过程或者想一个简单点的思路,好像并没有那么难啊,也不知道当时是怎么想的,总之, 不要惧怕这道题目,一开始没有思路也不要慌张,慢慢想,放轻松,想清楚了再动手写
2. memcpy(dist, src, sizeof(src)); //数组的复制
|
| 路径解析 | 栈、双指针、字符串操作、大模拟 |
1.大模拟还是仔细想清楚再写不要太着急,可以 将主要流程分为几个函数模块,先将函数模块列出来,流程搞清楚了,再动手,特别是题目中涉及的情况分支有哪几种,分别应该如何处理,要想清楚
2. 当有部分样例过不了,但是 自我感觉逻辑没有问题的时候,一定要思考一下之前犯的错误,尤其是被样例带偏,判断语句缩小了范围,导致样例过不了(比如说,这道题目中,题目中说的是相对路径是不以/开头,由于看到样例中是以.开头,就默认相对路径一定就是以.开头,这个问题一定要注意,错两次了!!
3. 在循环体中 使用getline,最好每次读入时,将str赋值为空串,否则无法读入空串的情况
4. str.insert(i, “abc”)可以从str下标为i的位置插入字符串abc, 记得此处只能插入字符串,要用双引号
|
| 游戏 | – | – |
| 网络连接 |
2016-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 最大波动 | 暴力模拟 | / |
| 火车购票 | 暴力枚举/STL |
灵活运用STL能够很方便解题,这个题目中运用 vector < queue < int > > 这个数据结构可以不用维护额外信息,直接暴力枚举
|
| 炉石传说 | 二维结构体数组 | / |
| 交通规划 | – | – |
| 祭坛 |
2016-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 中间数 | 排序、哈希 | / |
| 工资计算 | 逆向思维、暴力枚举 |
1. 数据范围很重要,以及题目中给出的数据约束条件也很重要,会影响解题的方法(比如这题可以暴力)
2. 有时候 根据题意解题并不容易,可以考虑逆向思维,比如该题,逆着不好算,正着来算,枚举可能的税前工资,判断税后是否吻合
3. 划分多区间的条件,可以利用数组进行存储模拟线段划分,if判断较为繁琐
|
| 权限查询 | unordered_map嵌套使用 | unordered_map<string, unordered_map<string, int>> |
| 压缩编码 | – | – |
| 卡牌游戏 |
2017-03
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 分蛋糕 | 暴力模拟 | / |
| 学生排队 | 暴力模拟 | / |
| Markdown | vector、字符串操作 |
1. str.find(str, pos) //大哥 pos是第二个参数,不要搞错了,这个错误犯了好几次了
2. 字符串的输出千万不要输出错
3. 可以使用vector<vector < string> >等stl容器
|
| 地铁修建 | – | – |
| 引水入城 |
2017-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 打酱油 | ||
| 公共钥匙盒 | – | – |
| JSON查询 | STL嵌套定义、双指针、递归 |
1. 结构体里 不能嵌套unordered_map,可以嵌套map
2. 使用未定义函数需要申明, 不需要变量名,函数头去掉变量名加分号
3. map值是一个map,不能直接将值赋给当前map,需要用一个变量暂存一下
4. erase删除后,字符会左移,原来的下一个字符会变成当前这个字符,处理的时候要考虑到这个问题
5. 答案特判输出时, 询问情况应考虑全面
|
| 通信网络 | – | – |
| 除法 |
2017-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 最小差值 | ||
| 游戏 | – | – |
| Crontab | 结构体、哈希、STL、字符串、大模拟 |
1. map定义时初始化,unordered_map <string, int> text = {{“jan”, 1}, {“feb”, 2}};
2.通过函数实现字符串的大小写转换, transform(src.begin(), src.end(), dist.begin(), ::tolower); //将源串转为小写,存储在dist串,该函数的头文件是algorithm
3.stoi(str.c_str()) // stoi函数不需要手动去除前缀0
4.vector res(n); //定义固定长度的vector,并且不用memset为0
5.重新写构造函数,一定要加上node(){}这个原始构造函数
6.判断闰年 (y % 400 == 0) 或 ((y % 4 == 0) && y % 100)
7. printf("%04d%02d%02d%02d%02d ", year, month, day, hour, minute); //日期的前补零输出
8. 存在不是固定的日期,而是某些时间节点满足时,可以将满足的时间节点用数组存储,通过时间来匹配是否是该时间点
9. 数组名作为函数实参,相当于传首地址,可以直接在函数内修改数组,函数形参定义处是一个不定义长度的数组
|
| 行车路线 | – | – |
| 商路 |
2018-03
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 跳一跳 | ||
| 碰撞的小球 | – | – |
| URL映射 | ||
| 棋局评估 | – | – |
| 二次求和 |
2018-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 卖菜 | ||
| 买菜 | – | – |
| 元素选择器 |
1. transform这个函数可以转包含数字的串,不用再特判了!
2. 使用vector容器的auto输出法,不需要特判容器中是否有元素
3. 没有思路不要慌,再根据题目要求想想要怎么解决这个问题, 将问题划分为小类,再逐一理清思路,逐一击破,想清楚再写,可以少改bug的时间,不要急,不要急,不要急,想清楚如何存储,如何处理,具体是有哪几个步骤,并且 数据结构尽量使用STL,STL,STL
|
|
| 再卖菜 | – | – |
| 线性递推式 |
2018-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 小明上学 | ||
| 小明放学 | – | – |
| CIDR合并 | ||
| 数据中心 | – | – |
| 管道清洁 |
2019-03
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 小中大 | ||
| 二十四点 | – | – |
| 损坏的RAID5 | ||
| 消息传递接口 | – | – |
| 317号子任务 |
2019-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 小明种苹果 | ||
| 小明种苹果(续) | – | – |
| 字符画 | ||
| 推荐系统 | – | – |
| 城市规划 |
2019-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 报数 | ||
| 回收站选址 | – | – |
| 化学方程式 | ||
| 区块链 | – | – |
| 魔数 |
2020-06
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 线性分类器 | ||
| 稀疏向量 | – | – |
| Markdown渲染器 | ||
| 1246 | – | – |
| 乔乔和牛牛逛超市 |
2020-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 称检测点查询 | ||
| 风险人群筛查 | – | – |
| 点亮数字人生 | ||
| 星际旅行 | – | – |
| 密信与计数 |
2020-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 期末预测之安全指数 | ||
| 期末预测之最佳阈值 | – | – |
| 带配额的文件系统 | ||
| 食材运输 | – | – |
| 星际旅行 |
2021-04
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 灰度直方图 | ||
| 邻域均值 | – | – |
| DHCP服务器 | ||
| 校门外的树 | – | – |
| 疫苗运输 |
2021-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 数组推导 | ||
| 非零段划分 | – | – |
| 脉冲神经网络 |
1. 如果样例过了,但是只得了十几分,并且逻辑没有问题,静下来冷静思考,一定是题目意思理解错了,题目的主要框架理解错了,仔细思考这个问题可能出现的情况,再仔细读题,思考可能出现的情况
2.如果题目中出现爆内存的情况,不要慌,仔细思考使用的数据结构有没有冗余,例如可以将数组替换成map之类的
|
|
| 收集卡牌 | – | – |
| 箱根山岳险天下 |
2021-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 序列查询 | ||
| 序列查询新解 | – | – |
| 登机牌条码 | ||
| 磁盘文件操作 | – | – |
| 极差路径 |
2022-03
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 未初始化警告 | 模拟 | / |
| 出行计划 | – | – |
| 计算资源调度器 | ||
| 通信系统管理 | – | – |
| 博弈论与石子合并 |
2022-06
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 归一化处理 | 模拟 | 浮点数的输出%f |
| 寻宝!大冒险! | – | – |
| 角色授权 | ||
| 光线追踪 | – | – |
| PS无限版 |
2022-09
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 如此编码 | 根据题意模拟 | / |
| 何以包邮? | dp、01背包 | 将题目尽量往对应模板上靠拢(转变题意,套用模板) |
| 防疫大数据 | ||
| 吉祥物投票 | – | – |
| 高维亚空间超频物质变压缩技术 |
2022-12
| 题目 | 考点 | 经验总结 |
|---|---|---|
| 现值计算 | ||
| 训练计划 | ||
| JPEG 解码 | ||
| 聚集方差 | ||
| 星际网络 |
更多推荐

所有评论(0)