前言:这次蓝桥杯比赛,我获得了python组的二等奖(下图中最后一行是我,差几名拿省一)。其实能获得这个成绩也算意料之外,情理之中吧。赛前也挺迷茫,自己到底能不能获奖,已经大三下了,还要准备考教资,找工作,还要准备蓝桥杯。如果自己最后什么都没得到,岂不是努力白费!但是,想归想,每天该练的题还是要练的。下面我就从赛前准备、赛中讲一下自己的经验吧!
1、赛前准备:我们学院在大三上就进行了院赛,最终选出了本次省赛的比赛成员,当然蓝桥杯的一切费用学院承包啦,可惜因为疫情比赛在本校进行,学校就替我们交了300块报名费,我们只需要好好准备比赛就行。但是,虽然很早就知道要参加比赛,但因为这样那样的事,也就耽误了。寒假练过一段时间的题,主要是把蓝桥杯练习系统的基础题都做了一遍。题很简单,但是要注意总结,比如:
(一)输入输出,要符合题意,不能输出无关的内容。
例:给定一个长度为n的数列,将这个数列按从小到大的顺序排列
如下图,第二行中:要连续输入一组数,以空格隔开,且元素应该为int类型才能排序。
输入:我们可以这样接收输入:a = list(map(int,input().split()))
将输入的字符串按空格分隔成列表,再用map把元素变成int类型,最后再强制转换为list
输出:如果需要将int类型列表输出为如下图的形式,
可以这样:先将列表int类型元素转换为字符串,再用join连接成空格隔开的字符串
print(" ".join("%s" % id for id in y[i])
当然,如果不习惯这样写的同学,可以用for循环遍历输出也可以,但是对于输入,我提供的这个挺方便的,而且我在比赛的时候,编程题接收数据的时候基本都用到。
(二)二维列表:对于某些题,很可能需要用到二维矩阵,可以这样写
y=[[0 for j in range(n)] for i in range(n)]
特别的,如杨辉三角,要创建一个第一行有一列,第二行有二列...式的矩阵,可以这样:
y=[[0 for j in range(i+1)] for i in range(n)]
(三)掌握python的基本语法,常用的函数,比如排序sort()、input()、str类型的内建函数、Print(),还有灵活运用列表、字符串、字典、集合,切片等等,比如常用的list(set(list))去重,将列表转置,利用字典统计出现的次数等等。这些都是常会用到的。还可能考到进制转换、日期问题、数据存储单位转换等,多了解了解。
(四)练题:赛前主要用的蓝桥杯练习系统练题,把基础题做了,3月份才开始练的“历届试题”(比赛是4月9号)。点击搜索框“B组”,先只做省赛。因为看了一下决赛的题,对于算法没有深入研究的人来说确实费劲,对于省赛,练习并掌握省赛的题足以。关键是要多总结,多练习。对于基本的算法要掌握,比如:全排列、辗转相除法求最大公约数、最小公倍数、二分法、递归、求素数、斐波那契、杨辉三角、贪心算法等等。但是对于高级点的比如广度优先搜索算法、深度优先、回溯、背包问题、动态规划等等,很多同学就要打退堂鼓了。如果自己要求不高,只求拿个省三省二,掌握基本的就好,比赛的时候,时间又少,写不出来还着急,最实用的就是暴力法啦,只求把给的测试数据运行通过就行,虽然暴力会超时,但是至少写了,有分就行。
练题的时候,我的建议是建一个文件夹,把每届的题整理归纳。很多题其实你可能也没有思路,可以搜索其他人的做法,但是不要自欺欺人copy就完了,最好得看懂,做注释,要调动自己的思维。实在做不出来也没关系,做做其他的题。还可能遇到一个问题就是,很多题就算是网上的答案也会超时,这个没办法,我发现python运行速度确实没有java有优势。但是如果你算法能力强,也可以自己研究研究,看看有没有好的方法,欢迎分享。
下面是本人练题时整理的,可以参考参考:
链接:https://pan.baidu.com/s/1UuF-pVFVQQ6gKmS0dnX9ng
提取码:1314
2、赛中:赛制为4小时,一般9点开始,1点结束,大脑思考起来,时间过得很快。这次比赛的题型是2个填空题,8个编程题,不同于以往的5道填空题5道编程题。但是我觉得整体题都挺简单的,用暴力法都能做大多数题。比如今年第一题,自己看一眼都知道答案。但是第二题相对来说没那么容易,基于python的运行速度,用一般的方法是跑不出来的。比赛嘛,为了得到更多得分,做题顺序很重要,要利用有限的时间做更多的题。别死磕,咱把会的题做了,不会的后面来推敲。本人比赛先做了第一题,然后就跳过了第二题,因为一时还不知道用什么方法能最快求出来。编程题前几个都很简单,仔细读题,把题目的测试数据通过,自己再设计几个数据测试一下基本就可以了。后面可能就会遇到路径最优,动态规划的题了,看个人能力了,能通过测试数据就是好的(对于我这样的算法小白)。我做了7个题,其他的没思考出来,时间也不够了,但是做了的测试数据都是通过了的。
最后:写这篇文章,最主要的是让下一届比赛的师弟师妹们不要过于焦虑,蓝桥杯也确实没那么难,好好准备,多练题,多总结,相信一定会有收获的!
第13届蓝桥杯省赛python(B组)真题:
链接:https://pan.baidu.com/s/1lAvox7rRw8MczNUrvSKiKA
提取码:1314