ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[上机考试指导]

2022-02-28 01:01:35  阅读:214  来源: 互联网

标签:剪枝 需要 上机 指导 DFS BFS 考试 DP 贪心


上机编程考试准备

1.0 提前做的准备

首先,这里默认投递岗位是需要进行上机编程的岗位。一般来说需要候选人,提前一段时间进行刷题训练,增强相关算法的熟悉程度。一般来说,对于上机编程的考试题目类型相对来说比较固定。
我们可以根据开始题目类型进行优先级划分,从而以更加合理的方式来分配备考精力。
第一优先级就是:DFS/BFS, 滑动窗口,双指针,二分, 哈希, DP; DP需要结合不同的公司的出题偏好进行斟酌,有的公司比较喜欢考DP,有的公司机试题DP反而不多。
第二优先级就是:贪心,树、图论、数学相关, 对于树而言,简单的其实就那些,难点的花费大量精力也收益不大,图论也是类型, 数学则更加抽象和费劲,在机试中考察的概率很低。
此外贪心则是一个玄学,要是熟悉简单的贪心,很容易看出,要是没遇到过的或者没想到的贪心,估计一时半会也难想,所以降低优先级。

2.刷题指南

首先找各个专题进行突破,要熟悉各个模板的套路,非套路的则需要根据逻辑思维进行模拟,能优化就优化,不能优化,暴力求解。毕竟没见过的题目,要在考试中完全写对的概率比较低。
在国内机试中,一般情况下都是按照case给分的,哪怕用例过一部分,也是有分的。所以在一定情况下,可以暴力获取一定分数。

2.1 第一优先级备考策略

然后大概讲讲刷各种专题时需要注意的点。
对于二分,需要注意,上下边界,对于mid是取long还是int, 除此之外,check函数的灵活使用,于此同时需要注意二分并不是需要满足单调性才能使用,其只需要满足性质二段性即可。
对于DFS/BFS,则需要掌握基本的搜索框架,比如BFS,层次遍历,权为1的最短路问题,多源BFS问题, 双向BFS问题,及难度更大一点的双端BFS模型,至于A*算法考的可能性也不大,性价比低,量力而行。
对于DFS而言,需要注意不重不漏的进行遍历方法的掌握, 经常会根据题目需要使用到回溯技巧,于此同时,DFS中蕴含着大量的剪枝机会,一般情况下不会这么裸的使用DFS搜索结果。剪枝技巧务必要掌握,一般常见的最优性剪枝,记忆化剪枝,等效性剪枝、可行性剪枝。
滑动窗口,一般都是用双指针维护一个区间序列的某些性质,需要注意什么的时候增加窗口,什么时候缩小窗口。比较典型的是求窗口内的最大值最小值问题这些。
双指针来说,思维比较简单,一般都是嵌套在题目内部的一个小技巧,一般不会单独拿出来进行考试,不然太easy了。
Hash的话,也是类型的小技巧。不是太难,一般多用于缓存一些信息或者是进行字符串匹配中用的多。
DP问题属于比较灵活,代码短小,但是存在思维难度大,这个一方面是通过掌握常见模型, LIS, LCS, 线性DP, 背包问题,还有一些其他的DP只能等着后面慢慢熟练掌握,挑选考试可能性大的,比如二维DP模型,背包九讲其实已经能解决很多问题了。
除此之外,还有什么前缀和、差分等小技巧也要注意。

2.2 次优备考专题

主要是图论,树,还有贪心等。
图论的话,优先掌握拓扑序,还有Dijkstra算法,其他的量力而行。
树的话,大概掌握基本的树相关知识就行,难的平时没训练过,一时半会儿也想不到。
贪心的话,主要是常见的区间贪心模型掌握清楚就行。

2.3刷题引导

主要是针对leetcode上刷, 至于面向ACM/OI的平台题目相对于没有训练过的人来说难度较大。
可以结合外面的leetcode讲解来刷,市面上有不少专门讲刷题的公众号什么的,可以关注一下。
我这里暂时先推荐三叶的刷题相关公众号,讲的很好。

3. 获分策略

万一备考时间太短了, 不得不采用一些盘外招。但是这些招我希望你永不会用上。
主要就是骗分策略,一般来说机试都是一个分数线,过了就可以进入下一轮。
一般情况下,有的用例输出的数据比较规整。有时,对于一个题目,直接返回0甚至可以过50%的用例。
可以通过对测试数据进行硬编码打表,来返回一些用例结果。也能获取部分分数。
但是需要慎用,可能会有后面的复查或者review环节,万一被发现了,需要能够自圆其说。

标签:剪枝,需要,上机,指导,DFS,BFS,考试,DP,贪心
来源: https://www.cnblogs.com/zhanghanLeo/p/15944027.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有