2019第十届蓝桥杯JavaB国二 4个月备战经验分享

本人普通本二学生,大二才开始接触的竞赛算法,蓝桥杯选择的JavaB,江苏省赛很顺利,排名第一进国赛。国赛很一般,排名八十拿的国二。分享一下自己四个月的备战经验。

选择

先说说我为什么选的Java,一方面是蓝桥杯问题,DevC++不如Eclipse好用。其实JDK1.6在竞赛算法上的类库跟C++比不占太大优势,而且Java本身执行效率还低,但是Java组Eclipse的优势很明显,不管是代码快速生成还是Debug效率都很高,所以我选择了Java这个工程语言作为自己的竞赛语言。另一方面,避开ACMer很大程度能提高得奖率,虽然说B组没有985同学,但是只要在C语言组,都避不开一部分ACMer。当然如果大家比较自信,也不用走的太束缚,在算法竞赛上C语言组的含金量一定会比Java高。(据说2020十一届蓝桥杯有Python组)

备战

1.Java学习

Java是我非常喜欢的语言,我想直接推荐去网上看培训班的视频,学完JavaSE就行,推荐魔乐科技李兴华老师的视频,非常强的学习大纲,字幕式讲课真的学习效率特别好,也方便衔接以后向JavaEE和架构师的发展。

如果只为竞赛,推荐以下几个点重视就行

  • Java语言基础
    2019第十届蓝桥杯JavaB国二 4个月备战经验分享_第1张图片
  • Java基础面向对象
    2019第十届蓝桥杯JavaB国二 4个月备战经验分享_第2张图片
  • 常用类的使用
    String,StringBuffer,Arrays,Math,Date,SimpleDateFormat等等
  • IO流
    速成就直接学File,Scanner和Writer怎么用就行
  • 基本变量类型的封装类
    Java泛型技术对基本变量类型非常不友好,建议掌握
  • 正则表达式
    会拼凑正则表达式,掌握String的matches方法就可以
  • 类集框架
    List Set Map Queue Stack以及它们的子类继承
  • 常用简单类接口实现
    Comparable Cloneable等,这几个接口主要服务Set类集

2.算法学习

这边就是比较难啃的骨头了,我觉得算法能力是程序员的内功,掌握多少技术应用是外功,虽然自己在实习的时候工作上用不到很多算法,但是这个我觉得是程序员必备的修养。

Java是偏向工程化的语言,在算法竞赛上的优势不如C++,所有没什么特别好的专对Java的竞赛算法指导书。推荐 《竞赛算法入门经典(第二版)》 ,这本书全部是C++写的样例,但是这本书的思维引导特别好,直接看pdf电子版就行。有数据结构基础的同学可以直接从第七章暴力破解开始学,能学多少学多少,例题用Java实现一遍,勤于笔记和总结。

省赛还是主要面向基础,都是一些基础算法策略的应用和变形,一般来说B组省赛要拿好名次需要掌握

  • 暴力破解
    枚举排列,子集生成,回溯法,迭代搜索,DFS,BFS等等
    2019第十届蓝桥杯JavaB国二 4个月备战经验分享_第3张图片

  • 基本算法
    分治,排序,递归,贪心等等
    2019第十届蓝桥杯JavaB国二 4个月备战经验分享_第4张图片

  • 博弈论
    简单的博弈问题直接采用递归思想,这一部分比较难理解。

  • 简单的动态规划
    背包问题等
    2019第十届蓝桥杯JavaB国二 4个月备战经验分享_第5张图片

  • 简单数理常识
    简单数论,递推思想,积分思想,尼姆堆问题等,还有就是质数问题,进制转换,闰年问题,公约数公倍数问题等老生常谈的东西

  • 判断程序复杂度
    这一点很重要,有时候没思考好,就算写了再多代码,程序效率低下依然无用,建议每次写代码之前想想时间复杂度

3.算法训练

蓝桥杯的模拟系统题库已经很健全了,多刷真题,贵在坚持,一般学校都会为大家开好会员,直接用,一定要勤于coding,也要给自己限时,多思考优化而不是只满足解出。

考场最大限度发挥

1.生理调节

发挥很重要。建议考试前几天调整作息,早睡早起,合理饮食。考试当天早饭一定要多吃点,省赛最好带点能量补充品,比如面包红牛之类,国赛会发面包牛奶和矿泉水,吐槽一下国赛发的面包有点难吃。

2.心理调节

蓝桥杯还是非常面向普通大众学生的比赛,含金量其实一般,主要还是面向普通本一本二学生,如果你真的用心备战了,竞赛入门经典刷通了,把历年真题刷完也理解透彻,我想你的算法水平是大多数同学难以企及的。

3.赛场上要灵动

  • 提前半小时进场,把常用的算法结构提前写好,代码存到非自动还原分区,熟悉键盘和环境,电脑该调还是要调,鼠标灵敏度拉满(我写代码经常要格式化代码,但是又和考试机输入法冲突,所以输入法我全关了)
  • 不要刷新考试页面,国赛我前面那兄弟一直刷新考试网页等题目出来,后来他就登不上了…
  • 下载好题目解压存到非保护硬盘分区里,拿到题目先大致看一下所有题,快速根据每个题分值分配时间。
  • 认真读题!认真读题!认真读题!
  • 如果你发现一个很简单的算法,算法想明白了就是跑不出来答案,建议去上个厕所冷静一下再查错,总比你把错的代码执行几遍再纠结花的时间少。
  • 编程题优先过小样例,自己多编几个不同情况检查算法。然后再写个程序生成大的样例输入,感受程序执行时间和效率。
  • 留时间检查,重新读每道题,检查代码,检查答案是否填错位置。编程题可以把提交的代码复制到Main.java里手动编译手动执行,模拟机器读题,看清输出格式,比如有些输出包含空格,比如输出a_b_c(代表空格),但是你可能输出的是a_b_c_,但是你又看不出来就很尴尬判错。

Studying & Working in Programming and Photography.
E-mail : [email protected]
More About Me : www.magicdevil.top
Love Sharing & Open Source.

你可能感兴趣的:(想法)