N 诺考研系列
计算机考研机试攻略
高分篇
N 诺课程教研团队
2020.03.22 更新
N 诺,数百万大学生都在使用的免费在线学习平台
写在前面的话
相信各位同学都知道,N 诺是一个大佬云集的平台。N 诺每周都会定期举办比赛,让同学
们在日复一日的枯燥生活中找到一种乐趣。
本书是 N 诺专为计算机考研的同学精心准备的一本神书,为什么说它是一本神书,它到底
神在什么地方?
1、这本书是 N 诺邀请众多 CSP 大佬、ACM 大佬、BAT 专业大佬以及往年机试高分大佬共同修订
而成。
2、这本书与市面上的书都不一样,这是一本专门针对计算机考研机试而精心编写而成的书籍。
3、这本书上的例题讲解以及习题都可以在 N 诺上找到进行练习,并且每道题都有大佬们发布
的题解可以学习。
4、N 诺有自己的官方群,群里大佬遍地走,遇到问题在群里可以随时提问。群里神仙很多,
不怕没有问题,就怕问题太简单。
相信同学们一定听过各种各样的 OJ 平台,但是那些平台不是为了计算机考研而准备的,
而 N 诺是唯一一个纯粹为计算机考研而准备的学习平台。
相信每一个同学在学习本书之前,都觉得机试是一个很头疼的问题,机试有可能速成吗?
我可以一周就变得很强吗?我们可以在短短两三周之内的学习就能拿到机试高分吗?
别人可不可以我不知道,但是在 N 诺这里,你就可以。
N 诺,数百万大学生都在使用的免费在线学习平台
虽然考研机试题目千千万,但是你可以“一招鲜,吃遍天”。
管它乱七八糟的排序,我就一个 sort 你能拿我怎么办?
管它查来查去的问题,我会 map 我怕谁?
管它飘来飘去的规律,我有 OEIS 神器坐着看你秀!
管它眼观缭乱的算法,我有 N 诺万能算法模板怕过谁?
本书虽然不能让你变成一个算法高手,但是本书可以让你快速变成一个机试高手,这也是
本书最重要的特点,以解决同学们的实际需求为目的。你可以不会算法,你可以不必弄懂算法
的原理,你只要学会本书教给你的各种技巧,就足以应对 99.9%的情况。
N 诺的课程教研团队全是由大佬组成,每个人都做过几千道编程题目,做编程题的经验十
分丰富,我们分析近百所院校的历年机试真题,从中发现了各个学校的机试真题都有相同的规
律,万变不离其中,于是本书也就诞生了。
计算机考研机试攻略交流群请扫描下方二维码或直接搜索群号:960036920
本书配套精讲视频:https://www.bilibili.com/video/av81203473
N 诺,数百万大学生都在使用的免费在线学习平台
关于 N 诺
N 诺是全国最大的计算机考研在线学习平台。N 诺致力于为同学们提供一个良好的网络学
习环境,一个与大佬们随时随地交流的舒适空间。如果你不知道 N 诺,那么你已经输在起跑线
上了,因为 N 诺是 - 计算机学习考研必备神器。
N 诺整理了计算机考研报考指南,帮助你了解考研的点点滴滴赢在起跑线上。
http://www.noobdream.com/media/upload/2020/01/29/guide.pdf
在 N 诺,你可以查询各个院校的考研信息,包括分数线、录取人数、考试大纲、导师信息、
经验交流等信息,应有尽有。
http://www.noobdream.com/schoollist/
在 N 诺,你可以尽情的刷各个科目的题库,还可以将题目加入错题本方便以后复习,也可
以写下自己的学习笔记,记录考研过程中跌宕起伏。
http://www.noobdream.com/Practice/index/
在 N 诺,你可以在讨论区里发表你的问题或感想,与全国几百万考研 er 分享你的喜怒哀
乐。
http://www.noobdream.com/forum/0/
在 N 诺,你可以将你不用的书籍或资料放到二手交易市场,既能帮助他人,还能为自己省
下一笔当初买书买资料的费用。
http://www.noobdream.com/Task/tasklist/
N 诺,数百万大学生都在使用的免费在线学习平台
如何使用本书?
访问 N 诺平台(www.noobdream.com)的历年真题,即可查询到全国各个学校的历年机试
真题。
如下图输入课后习题的编号即可搜索到题目
小技巧:N 诺是可以随意更换皮肤的哟,在右上角头像旁边。
N 诺,数百万大学生都在使用的免费在线学习平台
目录
写在前面的话.................................................................................................................................2
关于 N 诺.........................................................................................................................................4
如何使用本书?.............................................................................................................................5
第一章 从零开始...........................................................................................................................8
1.1 机试分析............................................................................................................................8
1.2 IDE 的选择与评测结果....................................................................................................10
1.3 DreamJudge 的使用.........................................................................................................11
1.4 输入输出技巧..................................................................................................................12
1.5 头文件技巧......................................................................................................................15
1.6 数组使用技巧..................................................................................................................16
1.7 审时度势 — 复杂度与是否可做.................................................................................. 19
1.8 C++ STL 的使用................................................................................................................ 21
1.9 多组输入的问题.............................................................................................................27
第二章 入门经典.........................................................................................................................29
2.1 简单模拟.........................................................................................................................30
2.2 进制转换类问题.............................................................................................................32
2.3 排版类问题.....................................................................................................................39
2.4 日期类问题.....................................................................................................................44
2.5 字符串类问题.................................................................................................................47
2.6 排序类问题.....................................................................................................................49
2.7 查找类问题.....................................................................................................................58
2.8 贪心类问题.....................................................................................................................65
2.9 链表类问题.....................................................................................................................69
第三章 数学.................................................................................................................................72
3.1 同模余定理...................................................................................................................73
3.2 最大公约数(GCD)....................................................................................................76
3.3 最小公倍数(LCM)....................................................................................................78
3.4 斐波那契数列...............................................................................................................79
3.5 素数判定.......................................................................................................................80
3.6 素数筛选.......................................................................................................................82
3.7 分解素因数...................................................................................................................85
3.8 二分快速幂...................................................................................................................87
3.9 常见数学公式总结.......................................................................................................89
N 诺,数百万大学生都在使用的免费在线学习平台
3.10 规律神器 OEIS.............................................................................................................. 91
第四章 高精度问题.....................................................................................................................93
4.1 Python 解法.................................................................................................................. 94
4.2 Java 解法....................................................................................................................... 95
4.3 C/C++解法.....................................................................................................................96
第五章 数据结构.........................................................................................................................97
5.1 栈的应用.......................................................................................................................98
5.2 哈夫曼树.....................................................................................................................101
5.3 二叉树.........................................................................................................................107
5.4 二叉排序树.................................................................................................................116
5.5 hash 算法.................................................................................................................... 119
5.6 前缀树.........................................................................................................................120
第六章 搜索...............................................................................................................................126
6.1 暴力枚举.....................................................................................................................127
6.2 广度优先搜索(BFS)...............................................................................................129
6.3 递归及其应用.............................................................................................................132
6.4 深度优先搜索(DFS)...............................................................................................135
6.5 搜索剪枝技巧.............................................................................................................140
6.6 终极骗分技巧.............................................................................................................143
第七章 图论...............................................................................................................................144
7.1 理论基础.....................................................................................................................145
7.2 图的存储.....................................................................................................................150
7.3 并查集.........................................................................................................................153
7.4 最小生成树问题.........................................................................................................156
7.5 最短路径问题.............................................................................................................160
7.6 拓扑排序.....................................................................................................................169
第八章 动态规划.......................................................................................................................172
8.1 递推求解.....................................................................................................................173
8.2 最大子段和.................................................................................................................175
8.3 最长上升子序列(LIS)............................................................................................ 179
8.4 最长公共子序列(LCS)........................................................................................... 183
8.5 背包类问题.................................................................................................................185
8.6 记忆化搜索...................................................................................................................188
8.7 字符串相关的动态规划...............................................................................................191
完结撒花.....................................................................................................................................194
N 诺考研系列图书......................................................................................................................196
N 诺网校招募令..........................................................................................................................197
N 诺,数百万大学生都在使用的免费在线学习平台
第一章 从零开始
1.1 机试分析
首先我们来看一下机试是怎样的一种考核模式
全国所有院校的机试都大同小异,大部分有自己 OJ(Online Judge 也就是在线代码测评
平台)的学校都会采用 OJ 上做题的方式来进行考核。这种考核方式的好处是公开透明,机器
进行判题并给分,就像 N 诺的 DreamJudge 一样。没有 OJ 的学校只能人工进行判题,人工判题
的话,一方面是主观性比较强,可能还会对其他方面进行考量,这个就需要自己去了解了。总
的来说,不论是 OJ 判题还是人工判题,代码都要能通过测试用例才能得到分数。
针对机试我们应该怎么去训练提升自己呢
首先,一定要做题,在 N 诺上做题,不要自己埋头看书,在不断做题的过程中才能提升自
己。如果非要用一个量化的标准来衡量的话,至少要在 N 诺上做够 100 题(也就是达到砖石
II 以上段位),才能保证你机试达到自己满意的成绩。题量是很关键的,看懂的题再多,都
不如自己实际敲代码去解决问题更稳妥。
解题速度也是很重要的
其实解题速度和题量是正相关的,相信题量足够的同学,解题的速度都不会太慢。机试一
般 2-3 个小时左右,要解决 5-8 道题。平均下来一道题最多半个小时,从读题、分析题意、思
考解法、敲代码、调试、测试数据到最后提交这整个流程下来,如果你平时训练的少,读题慢、
理解题意慢、思考解法慢、敲代码慢、调试慢,这样一算下来,一道简单的题都可能要一个小
时才能写出来,说不定题目还有坑点,再慢慢调试,基本上就凉了。
多打比赛也是很重要的
N 诺,数百万大学生都在使用的免费在线学习平台