ccf-csp历年满分题解 + 考点汇总 + 经验总结 + 常用代码模板(已完成63题,持续更新中...)

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不需要带参,也不需要加括号
//还可以这样写
vector <int> v;
sort(v.begin(), v.end(), greater<int>()); //使v从大到小排序

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

题目考点经验总结
分蛋糕暴力模拟/
学生排队暴力模拟/
Markdownvector、字符串操作
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

题目考点经验总结
数组推导
非零段划分
脉冲神经网络
收集卡牌
箱根山岳险天下

2021-12

题目考点经验总结
序列查询
序列查询新解
登机牌条码
磁盘文件操作
极差路径

2022-03

题目考点经验总结
未初始化警告模拟/
出行计划
计算资源调度器
通信系统管理
博弈论与石子合并

2022-06

题目考点经验总结
归一化处理模拟浮点数的输出%f
寻宝!大冒险!
角色授权
光线追踪
PS无限版

2022-09

题目考点经验总结
如此编码根据题意模拟/
何以包邮?dp、01背包将题目尽量往对应模板上靠拢(转变题意,套用模板)
防疫大数据模拟、STL、结构体数组、排序+去重判断条件宜多不宜少,不要为了代码简洁,擅自组合一些判断条件,可能会存在想不到的样例可能会被卡数据
吉祥物投票
高维亚空间超频物质变压缩技术

2022-12

题目考点经验总结
现值计算
训练计划
JPEG 解码模拟如果想不好变量名字,可以直接使用题目中的名字进行命名
聚集方差
星际网络
  • 24
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只可爱的小猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值