蓝桥杯省一经验分享-2020

笔者第一次参加蓝桥杯获得省一,在此把经验分享一下。大佬请无视( ̄(工) ̄)
蓝桥杯省一经验分享-2020_第1张图片

1. 什么是蓝桥杯?

全国软件专业人才设计与创业大赛,又名蓝桥杯大赛,是由工业和信息化部人才交流中心举办的年度赛事。其中,软件组分为 C/C++组和 Java组,以考察选手算法设计和程序设计能力为主。蓝桥杯是一个编程和算法竞赛,考察的是参赛者的编程能力和算法功底。

2. 蓝桥杯难度、赛制

首先蓝桥杯是一个相对于ACM和程序设计竞赛而言题目要简单的比赛,所以如果你现在就算连C语言都不太熟,那么你也不用灰心,只要你能够抽一个月的时间来训练并且训练方法得当,那么就可以在蓝桥杯比赛中获奖,至于为什么接下来再说。蓝桥杯为个人赛,一共有十道题目,题目难度顺序一般按照由易到难。前面几道题目一般是给出题面问一个特定的答案,只需要在本地计算然后提交答案。中间会有程序填空题,根据题意填空。后面的题目就是需要提交代码,跑通给定的案例,也就是OJ的形式。题目完全为客观题型,选手所提交作答的运行结果为主要评分依据,比赛不能携带纸质资料。

3. 解题策略

蓝桥的命题很有规律,并且爱考一些题型,只要能把这些题型抓住很容易拿奖。一般来说省赛赛题会有那么一两题和往年题型类似,所以要去做真题,有可能就能撞上。题面是肯定不会一样的,但解题策略会有相同的。前面几题一般来说会出现时间类的题目,比如下一个闰年,某年某月是星期几这种,当然不会出这种裸题(就是没有故事背景),但是基本上就是会考这种基于时间换算的题目,所以平时就需要在这些“简单题”上多下一点功夫。蓝桥杯前面3-5题里面基本上都不会涉及到复杂的算法,而据往届经验一般来说只要蓝桥杯能对3题及其以上就能拿奖,有些年份对两道题就有省三,所以不需要有很大的压力,要把这些简单题抓住。注意前几道题都是只提交答案不提交代码,也就是只要你算错了就一分没有,所以一定要保证简单题对,所以平时不要眼高手低,看见简单题就不做,上去就去磕哪些难题,“一壶茶一包烟,一道难题磕一天”是完全没有必要的,那些难题是要建立在你有了一定的算法功底上才能开始的,不要操之过急。

注意到前面几题是可以本地计算的,也就是说不限制用什么工具,所以如果你觉得编程解这道题不够高效的话那么你可以采用其他的工具,比如计算器,excel,甚至手算也可以。总之把结果算出来就行。

中间几道题中可能会有编程填空题,也就是给了代码让你填缺失的代码完成相应的功能,这种你可以在本地测试一下,有可能是递归,不过一般不会很难,能理解题目的代码干什么,然后写对应的操作就行,可以自己在本地试一试。

蓝桥杯后面几道编程大题类似于oi制度,啥意思呢,就是它会给出输入,你需要根据题意写代码输出对应的输出,只要有样例点是对的就有分,也就是说可以骗分,所以当你对一个题目没有想法的时候,直接就可以猜测样例对应的可能的最后输出的值,然后直接printf或者cout上去,猜不出来就可以把样例的输入输出打上去,这样是有可能骗到一些分数的,不要空着不写。

4. 如何准备

首先如果你目前c和c++都不太熟悉的话,现在就要去熟悉语法和练习了,这里推荐一个网课程序设计与算法(一) ,这是由北大郭炜老师在MOOC上一个开的一个广受好评的教授C和C++讲解程序设计与算法的课程,把这门课的课程和配套习题过一遍基本上语法就熟悉了,然后就可以去看一些算法的资料,可以是书籍,博客,也可以是一些网课。要大致了解常见的动态规划、贪心、搜索、模拟算法,注意要循序渐进。

在有了一定语言和算法基础后最好的准备方式就是去刷蓝桥杯的真题。蓝桥杯官网就可以做,不过那里只有一部分,可以去找找历年的真题。蓝桥杯官方还有对应的题解也可以去看看,如果找不到的话可以搜搜云盘,方法就不用我教了吧,你们都懂。

如果蓝桥杯的题目觉得有些难的话可以去一些oj刷题,新手不建议去leetcode,可以去洛谷,vjudge,百练等平台做题。一类题型做的比较多了就没有必要再做了, 遇到新题或者不会做的题目可以查阅解法,归纳到自己的知识体系当中,看它考了哪些算法和知识点。有不会的算法就去查一查,如果能弄懂最好用电子笔记记录下来。弄不懂不要死磕。

在时间管理上,准备蓝桥杯大约要一个月左右的时间,最好每天都能抽出一到两小时去写代码,学算法。准备编程类的竞赛一定不能光看不练,要多练多实践才能变强。

5. 其他注意事项

学会用C++STL!STL简介 C++内置了许多好用的库函数和数据结构,简单的比如快速排序、变长数组、全排列等。就拿快速排序来说,如果你的水平不是非常高的话你是写不出比内置快排更好的排序算法的,所以如果你在比赛时要排序一堆数据直接调用库函数即可,不用去手写冒泡或者插入排序这些。如果看到网上有一些解题代码是用到了一些你看不懂的关键字.xx那多半是使用了STL,可以上 C++ reference 查阅对应的接口。这个网站是官方的网站,可以锻炼锻炼英文。插一句题外话,计算机科学的同学们一定不要怕看英文资料,外文互联网世界有很多很好的学习资源和社区,全世界最大的程序相关的IT技术问答网站是stackoverflow,最活跃的开源社区是Github,平时没事可以多去这些英文网站逛一逛,在文末我会归纳一下,多去翻一翻英文资料,看不懂英文没关系,下载浏览器翻译插件或者有道词典,划词翻译也能看懂,不要只呆在中文互联网世界这个“小圈子”里面。

另外我再谈一下关于解题的部分。对于任何问题,只要它是一个可解问题,就一定可以通过把所有情况全部枚举来解决。即使是NPC问题(多项式时间内不能解决的问题),只要将所有可能的情况一一列举,都能在有限时间(不论它有多长)中解决。所以从理论上说,可解问题都有最低时间复杂度。一般来说编程大题提交上去计算时间超过1s就会被判定Time Limit Exceeded(TLE),就是超时。一般来说你的程序计算次数达到1e8就很危险了,就比如两层for循环i从0到10000,j从0到10000这种,循环体里面计算比较复杂就很容易超时了,然后1e9基本必超时,所以当你有了一定编程功底之后对某一道特定的题有了较为明确的思路并且按照这种思路解题运算次数可能超过1e8的时候你就要想想能不能优化一下你的程序了,也就是用编程复杂度降低时间复杂度。

最后,祝学弟学妹们能够在蓝桥杯中取得优异的成绩!

推荐阅览网站:

OJ类:
https://www.luogu.com.cn/
https://vjudge.net/
http://bailian.openjudge.cn/
http://acm.hdu.edu.cn/
http://poj.openjudge.cn/
课程:
https://www.icourse163.org/course/PKU-1001553023?tid=1450325447
https://www.bilibili.com/video/BV1G441187Qg?from=search&seid=14900548487407037068
https://www.bilibili.com/video/BV1R741117bK?from=search&seid=12058290746385149063
https://www.lanqiao.cn/paths/38/
开源社区及其他:
https://github.com/
https://stackoverflow.com/
https://www.oschina.net/project
https://www.coursera.org/
https://blog.csdn.net/u013486414/article/details/102961171#comments
https://visualgo.net/zh
最后放一下我的b站账号,会长期更新算法与数据结构的视频,有兴趣可以关注一下o(* ̄▽ ̄*)ブ
https://space.bilibili.com/7469540

你可能感兴趣的:(蓝桥杯,算法竞赛经验,蓝桥杯,经验分享,算法)