主图

2018蓝桥杯大赛算法特训(软件)

主办单位

      蓝桥杯全国软件和信息技术专业人才大赛组委会

课程时间

      34-331

特训内容

  • 7次算法课,大赛特邀专家精讲历届真题及高频算法
  • 直至赛前,资深算法老师群内作业辅导和答疑
  • 全国参赛小伙伴互助带打
  • 第6次课《分治法与动态规划》开课时间:2018年3月18日晚上7:30

 

【课程简介】

    《2018蓝桥杯大赛算法特训》是应广大考生需求,由蓝桥杯全国软件和信息技术专业人才大赛组委会主办,聘请大赛资深顾问专家团成员之一于航老师,通过“图文+音视频”多媒体形式提供的蓝桥杯真题常见算法课程,同时还有持续至赛前的微信群作业和辅导答疑。本次课程提供回放。

【课程目标】

      课程通过7次课共14课时深入浅出的讲解,帮助学生快速理解和掌握蓝桥杯大赛中常见的算法思维、算法技能和解题思路。同时提供持续至赛前的微信群内作业及辅导答疑,帮助学生提高学习效率、锻炼算法思维。

【课程大纲】

1、暴力破解与实用性优先

  • 暴力破解在大赛及企业应用中的重要性
  • 暴力破解中的实用性原则
  • 逆向解法
  • 枚举法

2、递归原理与构造技巧

  • 递归的重要性
  • 递归与循环的关系
  • 递归的构造技巧
  • 递归出口的考虑
  • 参数设计
  • 间接递归

3、典型问题的递归框架

  • 排列问题
  • 组合计数问题
  • 组合枚举问题
  • 递归设计——条条大路通罗马

4、数学知识的运用

  • 并非数学竞赛
  • 进制问题及其巧妙运用
  • 整数与整除问题
  • 欧几里得扩展定理
  • 有理数表示,大数问题

5、博弈问题的思路

  • 递归搜索的基本框架
  • 当有平局时的考虑
  • 尼姆定理
  • 缓存结果

6、分治法与动态规划

  • 分治思想的重要性
  • 二分法是基础
  • 动态规划问题的求解次序
  • 复杂问题的规划

7、图及其他

  • 图与树的关系和转化
  • 图的基本遍历
  • 利用树的性质
  • 线段树与并查集介绍

二维码图块,7号渠道

 


【关于讲师】

      于航

      中科院计算所
      曾于浙江大学电机系实验室、浙大网新、神州泰岳、中科院计算所等从事软件开发或软件技术培训工作,曾在嘉兴电力、福建电信、扬州联通、中石油物探、中国气象局卫星中心等大中型项目中担任项目组长或技术主管。
从第一届蓝桥杯大赛开始至今,作为大赛顾问专家团成员之一,为大赛提供软件开发技术方面的顾问支持,对蓝桥杯大赛有着深刻的影响和了解。
于老师授课风格轻松幽默,对复杂技术难题理解透彻,讲解深入浅出、层次清晰,喜欢以创新的方式呈现问题关键所在。


【购买须知】
  1. 该课程为付费系列课程,按课程计划定期更新,每节课程可在开课时直播学习,也可反复回听
  2. 购买课程后,请确认您是否已添加小蓝为微信好友,然后私聊小蓝,小蓝将您邀请进入微信算法特训学习群。每次开始上课之前,小蓝会在群里提醒您准备上课
  3. 该课程为虚拟内容服务,购买成功后概不退款,敬请原谅
  4. 如有其它疑问,可点击左下角“咨询”按钮,与客服沟通后再购买

1. 如果您在报名过程中遇到问题,请点我寻找答案。

2. 如果还不能解决您的问题,请直接问小蓝。


【往期活动】

嘉宾说——张浩威(C语言 A组-特等奖 北大)

  • 算法学习的有效方式

我认为在学习一个新的算法时,有条件的话可以请学长或者已经学过该算法的同学老师进行讲解,没有条件的话可以上网搜blog进行学习。在学新算法过程中遇到的难点可以通过上网找大牛进行咨询。只要不是特别难的算法(例如FFT,带花树等)在OI或者ACM圈内都是较为成熟的,都能得到相应的解答。在学习完算法后,应当刷10道以上的该算法的题目,来进行巩固学习。

另外我并不推荐为了学算法而学算法,一个比较好的方式是在不断刷题的过程中,会遇到自己不会的算法,此时再进行系统性地学习较有帮助。

  • 关于书籍

这里我只推荐两本书:刘汝佳的白书和黑书。前者适合刚入门的同学学,等到白书已经能够完全吃透了,再去看黑书,黑书是给学有余力的同学的。

  • 关于刷题

大力推荐codeforces,几乎所有的题目都是有质量的题目,不推荐hdu和poj,里面的题目太杂太多,难度和质量都参差不齐。只有在刷套题(例如ACM训练)时,才会选择去做这两个题库。等到有一定水平时,可以刷BZOJ。

  • 关于备考

考前60天能干的事情很多,如果每天从早上做到晚上,那么能刷将近500道题目,对自身实力是一个质的提升。但如果时间不够,还有学业压力,以及过年需要走亲访友,那么我不建议在这60天中学习新的算法,而应该投入精力去巩固之前学过的知识。

  • 关于目标

这个视自身实力而定。就我们北大的人而言,蓝桥杯的比赛仅仅是一次证明自己实力的机会,考前也并没有设定什么目标,只需要放平心态去稳定发挥就可以了。

嘉宾说——柴文俊(Java B组-特等奖 青岛理工)

  • 我认为算法学习的有效方式是?

我个人认为学习算法有两种吧,一种是学好了理论,再去OJ(onlinejudge)上找相关的题目做,这样学会的比较扎实,像我们学校同学训练大多会每个专题找一套题,像是基础的并查集一套,最短路一套,全部都搞明白,这样大部分相关专题的算法题目都是形变内涵不变了。这里说的关键是全部都搞明白,这是要多下功夫的。一个比较有效的方法就是用博客的方式记录自己思考的过程,检视一下自己思维的过程,虽然会花费更多时间,但是效果也会好很多。另一种方法就是基础没有打牢,就开始做题,从题目中了解更多的信息,这种方法更适合时间紧迫的情况,实践起来是痛苦的,不懂的算法做起来根本没有思路,结果往往是直接从网上别人的题解开始学习,但也是一种方式。另外学校里如果有个学习算法的组织,那么学习的效果我想会事半功倍,强校一般都有acm组织,如果没有也应该自己自发的去找兴趣相同的同学一起学习一起进步,我觉着这样更能让人坚持下来,在互联网上找一起学习的小伙伴也可以。

多做题,多参加比赛

  • 在看书方面,我使用的算法学习书籍有哪些?先看哪本后看哪本?每本书的特点是什么?适合什么样基础的学习者?

算法竞赛入门经典第二版(紫书),挑战程序设计竞赛第一版。我推荐先看紫书的前几章,有很多编程的小技巧,题目也比较基础,后面的章节相对难一些适合基础扎实的同学。系统的学习算法看“挑战”不错,虽然我本人没有跟着那本书学习,这本书上基础算法的分类做的挺好而且代码相对紫书好懂一些吧。

  • 刷题练习方面,我通常使用哪些练习系统?我是如何使用这些练习系统来辅助我的算法学习的?

当时搞竞赛的时候各个学校的OnlineJudge都在用,最初常用hdu,杭电oj(http://acm.hdu.edu.cn/), pku(http://poj.org/), 北大oj,NYOJ上有中文题而且分类不错(http://acm.nyist.edu.cn)。还有练习赛最常用VJ(Virtual Judge),就是ACM常用的一些编程平台。一般就是在上面找对应专题的题目做。VJ的话,用来举办练习赛,VJ可以用各大OJ平台的题目组成一场比赛来打。

  • 考前60天,我的学习备战计划是怎样的?我是如何安排和保证我的学习时间和学习进度的?

实话说去年备战没有特别的计划,因为大学三年也一直在搞算法竞赛,就是跟着学校的acm组织一起训练,但是心里也比较重视吧,临近比赛的时候专门针对B组常考的题目进行了练习(像是复杂一些的搜索算法)。大概是2-3周前吧。这里建议小白用户寒假不要浪费,每天多做几道题,打好基础,养成做题的状态,开学后会进步的很快。

  • 考前60天,我给自己定的参赛目标是什么?

当时定的目标是国家一等奖吧

 

嘉宾说——辜思学(C语言B组-特等奖 成都东软学院)

  • 我认为算法学习的有效方式是?

有效的刷题。什么才有效,就是找到自己的薄弱点,多做类型题。

  • 在看书方面,我使用的算法学习书籍有哪些?先看哪本后看哪本?每本书的特点是什么?适合什么样基础的学习者?

我用过的是刘汝佳的小紫书和大白书,名字叫《算法竞赛入门经典》和《算法竞赛入门经典——训练指南》;我先把小紫书基本看完、做大半题目后,再做了一些大白书上的题;他们都是以题目为主、理论为辅,难度的话,小紫书前面是很基础的题目、后面例题还是有一定难度,而大白书确实不简单;初学者的话尽量先学学C语言和C++的STL模板库(竞赛的话C++我只用几个常用的STL模板库),尽管小紫书前面有这部分,但是我觉得不够详细。

  • 刷题练习方面,我通常使用哪些练习系统?我是如何使用这些练习系统来辅助我的算法学习的?

我常用的练习系统是HDU和POJ两大OJ(在线的判题系统),备战蓝桥杯的时候也刷过“蓝桥杯”练习系统和博客上搜的蓝桥杯初赛、决赛题目;学习的方法主要就是刷题,从刷题的情况来获得自己的薄弱点。

  • 考前60天,我的学习备战计划是怎样的?我是如何安排和保证我的学习时间和学习进度的?

其实也就是刷题,不过备战蓝桥杯的时候倒是需要知道它的比赛形式以及题目可能涉及的知识点,这些我通过历年真题来看的;我是通过先做计划,再在每周总结时不断调整。

  • 考前60天,我给自己定的参赛目标是什么?

我之前的目标是通过初赛,到决赛的时候尽力拿个一等奖。

最后两个小小的建议:学习C语言的时候请一定学好指针和链表,但是比赛不建议使用手写的动态链表,如果一定要用、建议写静态链表(数组模拟的链式存储);还有就是比赛的时候不会实时返回结果正确与否,因此谨慎、再谨慎。

嘉宾说——柳真(java B组-国二 中南民族)

很高兴能够受邀作为此次第九届蓝桥杯备赛分享活动嘉宾,首先,简单介绍一下自己以及我的参赛情况:我叫柳真,中南民族大学2014级软件工程专业学生;参加过两次蓝桥杯,分别是第七届C/C++类别大学B组(获奖情况:完全打了一个酱油,什么奖项也没有拿到)、第八届Java类别大学B组(获奖情况:国家二等奖)。

分享内容主体就按照组委会给的邀请函上建议的问题要点说一下吧,我看了上面要点,这些要点比较符合备战同学参考,看了之后帮助应该比较大。文章的最后给大家分享我的两篇博客,一篇是我的赛后总结,一篇是我备战第八届蓝桥杯期间整理的历届蓝桥杯真题及题解。

问题1:我认为算法学习的有效方式是?

先弄懂一些算法基本思想理论,比如说选择排序、冒泡排序、快速排序和合并排序等排序类,递归法、贪心法、动态规划等这些算法思想。在弄懂这些基本思想理论期间,要结合一些经典算法问题练练手,加深理解,比如八皇后问题、硬币收集问题和找零问题等。完成这些后,再刷一些质量高一点的算法题,基本就可以了。后面针对参加的比赛等级和类别,专项刷题学习,遇到不懂的算法理论及方法,有了前面打的基础,应该能够很快理解并应用。

问题2:在看书方面,我使用的算法学习书籍有哪些?先看哪本后看哪本?每本书的特点是什么?适合什么样基础的学习者?

  1. 我使用的算法学习书籍:
    1. 《算法设计与分析基础》第3版 Anany Levitin 著 潘彦 译
    2. 《编程之法》July著
    3. 《剑指Offer》何海涛 著
  2. 看书顺序:《算法设计与分析基础》、《编程之法》、《剑指Offer》。
    1. 《算法设计与分析基础》特点:适合零基础同学学习。这本书分类别几乎把所有经典算法方法和思想都讲了一遍,这本书写的很好,也是我所在学校专业的算法课程教材。这本书我前后刷了两遍,感觉收获很大;
    2. 《编程之法》特点:适合有一定基本算法理论基础的同学学习。针对求职面试编写讲解的一些经典算法题,书上题目讲解的很清楚,这些题目的质量很高;
    3. 《剑指Offer》特点:适合有一定基本算法理论基础的同学学习。也是针对求职面试编写讲解的一些经典算法题,和《编程之法》差不多,唯一区别就是本书题目比较多一些,题目多的情况就是讲解程度没有《编程之法》那么详细。 

问题3:刷题练习方面,我通常使用哪些练习系统?我是如何使用这些练习系统来辅助我的算法学习的?

只使用过蓝桥杯练习系统。里面的题目除了VIP题库,基本都刷完了。从我个人刷题情况来说:蓝桥被练习系统中除了历届真题部分,其它题目大部分都很基础,和比赛真题相差较远,而且解决思想都比较接近,感觉唯一好处就是提高刷题信心,熟悉比赛时的系统环境。我使用练习系统,前期是熟悉比赛环境,后期主要就是刷上面真题,根据得分来调试程序。

问题4:考前60天我的学习备战计划是怎样的?我是如何安排和保证我的学习时间和学习进度的?

我大二参加的那次几乎没怎么准备,那时我大二下课程很多,几乎一天满课。我大三参加时,大三下课程很少,所以我除了上课时间几乎都在刷题学习。考前60天的学习状态是:除了上课其它时间都在看书刷题,前30天在刷《编程之法》、《剑指Offer》,后30天在刷蓝桥杯练习系统上题目以及历届比赛真题。在此期间,对于新接触的算法思想理论一般花一天时间解决;正常情况下一天能够完成一套比赛真题题解,并完全理解。在考前10天,一天一套真题,让自己熟悉蓝桥杯出题模式及难度。

问题5:考前60天,我给自己定的参赛目标是什么?

省赛:直接是奔着省赛一等奖去的;国赛:目标是国家一等奖,不过最终与之差了点>~<。

 

最后,给大家分享我的两篇博客,具体链接如下:

1.第八届蓝桥杯个人赛赛后总结(http://www.cnblogs.com/liuzhen1995/p/6924039.html)

2.蓝桥杯软件类个人赛历届真题汇总(资料整理)(http://www.cnblogs.com/liuzhen1995/p/6904679.html)

 

 

 

 

 

 

嘉宾说——李文枭(JAVA组 国二 上海理工)

  • 我认为算法学习的有效方式是?

学习算法首先要将基本的理论知识过一遍,把一些经典的算法题目练熟,切忌一上来就盲目的去刷题。基础打好后然后找到自己的薄弱点大量刷题并总结就可以了。在刷题过程中,尽量找志同道合的同学一起训练,如果学校有算法集训队,能够加入是最好不过了。当练习一道题被卡住很长时间的时候,尽量多找同学交流,不同的人有不同的思路,别人的一些想法很容易给我们一些启发,就我而言,在和同学讨论的过程中往往会产生新的想法顺利解决问题,这也是一种提高效率的办法。

  • 在看书方面,我使用的算法学习书籍有哪些?先看哪本后看哪本?每本书的特点是什么?适合什么样基础的学习者?

我使用过的算法书有很多,包括《挑战程序设计竞赛》和刘汝佳的《算法竞赛入门经典》,这两本书是我比较推荐给初学者的。 《挑战程序设计竞赛》这本书会给出一道题的多种解法,并且解法是层层优化的,也就是说作者会首先给出一种最普通的解法,然后逐步修改代码提高算法的执行效率,我认为这本书对提高我们优化已有算法效率的能力是很有帮助的。《算法竞赛入门经典》这本书这本书的主要优点是作者会对每一道题目的求解代码做出较为详细解释,解决了我们看不懂代码的问题。至于其他书,比如《算法导论》这本书在我学习算法时有很多人推荐,但对于刚开始接触算法的同学,我建议还是不要拿这本书看了,里面都是主要是关于数学的东西,实在是太枯燥了。 还有类似这本书《ACM国际大学生程序设计竞赛亚洲区预选赛真题题解》,里面都是罗列题目和解法,完全没有解释,我感觉对于基础薄弱点的同学也不要看这种书,因为有时候确实看不懂,而且还打击自信心。

  • 刷题练习方面,我通常使用哪些练习系统?我是如何使用这些练习系统来辅助我的算法学习的?

我刚开始刷题的时候使用的是POJ,这个练习系统的好处是已经有很多人做过里面的题目并把解法及其解释写到了自己的博客里,所以当我们遇到问题时,很容易在网上搜到一道题目的解法来参考。但是有一个缺点是这个系统的题目都是英文的,而蓝桥杯的题目是中文的,不过同学可以把它当成是锻炼自己的英语能力的过程。 之后的话我们的学校给我们买了蓝桥杯的VIP账号,然后就转战蓝桥杯的练习系统了,不得不说蓝桥杯的题目比起POJ的还是简单不少的,如果前期POJ上能刷100道题以上的话,蓝桥杯的题目还是很容易上手的。但是有一个缺点是蓝桥杯上有些比较难的题目在网上搜索别的同学分享的答案,这就需要同学之间讨论或者找老师请教了。

至于我如何用练习系统辅助自己的算法学习, 我通常不管再忙,每天都至少要刷掉一道题来保持做题的感觉,到了周六周日,我会和其他同学一起集训,比如说做蓝桥杯的赛前模拟训练,然后再一起讨论题目,分享自己对题目的见解等等。我觉得小组学习真的是一种非常有效的学习方法。

  • 考前60天,我的学习备战计划是怎样的?我是如何安排和保证我的学习时间和学习进度的?

考前60天的话,我也是基本是每天保持至少一道题目的题量,然后定期拿蓝桥杯的历届试题做赛前模拟训练。坦白来讲,赛前那段时间我确实挺忙的,要兼顾课内和课外的很多事情,任务都是在并行推进,有时不得不牺牲掉自己的睡眠时间, 不过风雨过后总会见彩虹的,一切努力都是值得的!

  • 考前60天,我给自己定的参赛目标是什么?

第八届蓝桥杯已经是我第二次参加了,有了第一次的经验,第二次参赛感觉对自己也是蛮有信心的,自己定的目标使保国二,冲国一,最后拿到了Java组的全国二等奖,感觉也挺满意了:)。

嘉宾说——黄诚博(Java A组-特等奖 南邮)

  • 我认为算法学习的有效方式是?

长时间的积累。因为本人是一般的ACM选手,所以日常就是学算法,刷刷题什么的,时间累积下来,会的也算是不少。

  • 在看书方面,我使用的算法学习书籍有哪些?先看哪本后看哪本?每本书的特点是什么?适合什么样基础的学习者?

我看过刘汝佳的《算法竞赛入门经典》,还有一本算法设计与分析基础(第3版)(莱维汀),然后就没看过什么书了,更多是刷题吧,初学者可以看看刘汝佳的那本。

  • 刷题练习方面,我通常使用哪些练习系统?我是如何使用这些练习系统来辅助我的算法学习的?

一般就是poj,hdu,codeforces这些。去codeforces打比赛吧,那时候还比较年轻,熬的起夜,就去做cf的比赛,感觉进步还是挺大的。然后学算法的时候会去poj和hdu找裸题->进阶题做。

  • 考前60天,我的学习备战计划是怎样的?我是如何安排和保证我的学习时间和学习进度的?

因为我是传统c++选手,所以我的主要时间还是用来学习java,熟悉java的语法和各种库函数,然后感觉会的差不多了就去蓝桥杯的练习系统上刷刷题,然后查漏补缺这样的。然后因为蓝桥杯是类似OI赛制,所以还练了一下1A,熟悉了一下手感。

  • 考前60天,我给自己定的参赛目标是什么?

一直看的比较淡,别比之前一次更差就行了。

 

蓝桥杯60天备战分享会问题解答(软件类)

目录

一、          有关赛事规则和官网资料的问题

二、          关于考试现场经验和技巧

三、          关于知识学习

(一)       有关比赛的能力要求

(二)       比赛考试范围

(三)       算法如何学习

(四)       相关学习资料:书籍、练习题库、教学视频等

(五)       暴力破解

(六)       其他

 

一、       有关赛事规则和官网资料的问题

  • 官网的真题都是初赛的吗?

答:蓝桥杯大赛官网“辅导资料”栏目有大赛软件类近几年省赛和决赛真题、同时还有电子类近几年模拟题。

链接:http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=644

 

  • Java 组的 JDK 版本是多少呢?会不会提供 JDK 文档?

答:C和JAVA比赛时都会提供相应的比赛软件,JAVA提供JDK1.6版本和API帮助文档。此外,C和JAVA的比赛软件在蓝桥杯大赛官网“辅导资料”栏目中可以下载,提前练习。

链接:http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=644

 

  • 语言只是用来划分获奖比例的吗?那比赛的时候使用何种编译应该没有问题吧?

答:请根据所选科目的语言来答题。

 

  • 可以提交多语言吗,比如第一题用JAVA 第二题用C?可以合并语言吗?

答:请根据所选科目的语言来答题。

 

  • 排名是C跟JAVA一起排名还是独自分开排名?

答:C和JAVA分开评奖,各自又分为A、B、C组,共6个组。

 

  • 之后还会公布赛点吗,之前公布了一部分了?

答:赛点会陆续公布的,详见官网的赛点名单。

 

  • 本科a组与b组分开比赛,之后还合并吗?

答:a组,b组短期没有合并迹象,a组愿意,b组不肯。

 

  • 提交源代码,类名为Main,所有的代码写在一个文件里……是指一题的所有方法还是所有的题目?

答:每道题只提交题目要求的答案部分,按题提交答案,类似于练习系统的提交系统,不需要包含文件头等。

 

  • 题目中给的用例一定是其中的一个用例吗?

答:题目中会提供用于帮助学生理解题目和对做题有必要作用的相关内容。

 

  • 所有用例都超时了就0分了是吗?

答:大题运行时间有要求,许多同学用例不过就是因为超时,这是算法不佳的缘故。所有的用例都超时,真要做到这个还挺有难度哎。

 

  • 超时的话应该是得部分分吧,也就是能得没超时的分。。还有Java超级容易超时,scanner太慢了。老师有改进scanner的方法吗?超时有分数吗?于老师,程序跑的时间有要求吗,做练习系统总会超时。

答:测试用例超时,该用例0分,但整个题目可能会有分数。

 

  • 比赛评测机器环境和蓝桥杯官网的一样吗?比赛用的电脑系统是什么的?
    参赛时用的什么环境?参加考试时什么环境?

答:比赛用的电脑系统要看赛点的机器配置,通常是WINXP、WIN7/8/10。JAVA选手比赛中只能使用Eclipse Helios for JavaSE,JDK1.6版本,API帮助文档,C语言选手比赛中只能使用Dev-cpp 5.4.0版本,C/C++ API帮助文档。

 

  • 最多只能带一支笔?草稿纸管够吗?可以带什么进去,可以带水吗?考试的时候能去上厕所吗?

答:省赛允许学生带笔,草稿纸统一现场发,用完再领,赛后草稿纸须交回方可离场。如想带水、吃的需要遵守赛点机房的相关要求,可在赛前一周,在蓝桥网下载的准考证上找到赛点老师信息进行咨询。比赛允许上厕所,但需举手示意,监考老师允许后方可。

 

  • 可以带纸质资料吗?可以带资料拷到电脑上吗?可以带模板吗?

答:不允许携带纸质资料入场,不能携带任何电子设备,当然不能拷贝自己带的资料。

 

  • 一个测试用例也没有吗??会给出后台的所有测试用例吗?

答:不会给出测试用例,但是题目中告诉用例的规模有多大。

 

  • 可以提交很多次 但是一最后一次提交为最终结果最终分数对吗?提交多次,按最后一次提交的算?还是哪次对的多算哪次?提交次数会影响成绩吗?提交次数跟排名有关系吗?只可以提交一次吗?第一次错了 还可以提交么?提交几次?同一道题可以提交多次吗?以最后一次提交为准吗?老师,编程题能提交几次?提交后能看数据输入输出吗?边做边提交的话,如果我需要修改怎么办?提交完了怎么改?只能提交一次吗??提交了之后能不能修改答案呢??

答:在比赛时间内每道题的答案可以提交多次,并以最后一次提交的结果为准,提交次数不限制,须注意的是提交答案须在比赛进行中,比赛系统倒计时结束时将不能提交答案。

 

  • 可以看到每次提交之后的分数吗?请问可以看的到每次提交后的分数吗 不然我怎么知道我哪次提交的是我的最优解。可以提交多次吗?提交之后可以看自己这道题多少分吗?提交后可以看到是否通过测试用例吗?

答:目前还无法实时看到自己提交答案的分数,将来或许会可以的。

 

  • 省赛是每个省各自排名吗,咋上届辽宁省c组没一等奖?

答:省赛是以省为单位进行排名的,如果有的省份没有一等奖,是因为省赛成绩不理想。

 

  • c++标准库的模板有么?

答:C和JAVA的比赛软件在蓝桥杯大赛官网“辅导资料”栏目中可以下载,里面有的就是可以提供的,选手可提前熟悉。

链接:http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=644

 

  • 这个获了省奖是不是没啥用?

答:蓝桥杯大赛是全国性比赛,2017年又走出国门举办了国际赛,未来大赛不但从规模还是影响力都会越来越大。能在蓝桥杯大赛上获奖对于学生来说本身是一个荣誉和实力的象征。同时根据各个院校政策的不同,省赛对于保研、就业和院校评三好学生和算学分等都会有一定的作用。

 

  • 10道题的分值怎么安排?

答:每届比赛分值安排都不相同、题目数量也不定。

 

  • 怎么连接考场服务器?

答:输入赛点机房比赛服务器的IP地址后出现登录页面,登录以后即可。比赛前30分钟允许进考场,提前熟悉,有监考老师指导。

 

  • 考试的时候可以上网吗?还可以上百度?

答:考试期间不允许上网,也不能上网,该行为属于作弊行为。也不能访问其它考生的机器,只能连接考场服务器。

 

  • C语言支持C99标准吗?

答:详见蓝桥杯大赛官网“辅导资料”栏目中的第九届蓝桥杯大赛比赛大纲。

链接:http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=644

 

  • 蓝桥杯没有面向对象吧?

答:请参考大赛历届真题,见蓝桥杯大赛官网“辅导资料”栏目。

 

  • 老师,那个我在蓝桥杯官网上下载的真题打开来为什么是乱码?

答:请用记事本打开真题的文件。

 

  • 有没有练习题目?带答案那种,最好和考试的差不多

答:蓝桥杯大赛是全国性比赛,不是考试。且因为编程的题答案不是唯一,所以都不带答案。

 

 

  • 比赛5个小时有面包吗?好吃吗?

答:蓝桥杯大赛决赛的时候会有面包、水和牛奶。至于好不好吃,您可以进入决赛来品尝一下。软件类比赛是4个小时、电子类比赛是5个小时。

 

  • java有ide编译环境例如myeclipse吗?

答:C和JAVA比赛时都会提供相应的比赛软件,JAVA提供JDK1.6版本和API帮助文档。此外,C和JAVA的比赛软件在蓝桥杯大赛官网“辅导资料”栏目中可以下载,提前练习。

链接:http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=644

 

  • 选过java组能换成c语言组嘛?

答:没有特殊原因报名后不能换组,具体需联系蓝桥杯大赛组委会各省份负责老师。

 

  • 每个组别的获奖人数都是60%?60%可以拿到奖吗? 拿奖容易吗?至少要答对几题才保证拿奖?要想拿省一大概要达到什么水平?拿到省一需要做对几题啊?老师一般答对多少分的题可以进决赛?省几进国赛?排名多少才能国赛呢?一二三等奖是怎么划分的?

答:省赛每个组别设置一、二、三等奖,比例分别为10%、20%、30%,总比例为实际参赛人数的60%,零分卷不得奖。省赛一等奖选手获得直接进入全国总决赛资格。所有获奖选手均可获得由工业和信息化部人才交流中心及大赛组委会联合颁发的获奖证书。

 

  • 广东赛区的多少道题能进决赛呢?

答:大家总是问做了几道题才进决赛,这个各个区不一样。只要尽力学习、尽力准备、尽力发挥自己的最优水平就好。

 

  • 每道题的得分是考试结束才公布吗?考完多少天能出成绩?请问大概多久能反馈结果啊?

答:不公布得分只公布奖项,软件类一般是比赛后2周左右。

 

  • 小蓝姐姐会在国赛给我们颁奖吗?

答:一切皆有可能

 

  • 蓝桥初赛的奖金是多少呢?

答:蓝桥杯省赛获奖后,将获得大赛组委会颁发的获奖证书。

 

  • A组和B组的题目有什么不同?

答: A组是重点本科,B组是普通本科,A组的题目难度会更大一些。

 

二、       关于考试现场经验和技巧

  • 做题不会选择,怎么办

答:不会选择先做哪个?可以做第2题

 

  • 在比赛过程中怎么才能知道自己的程序超时了没?运行时间有限制?试题有时间限制吗,是一秒?

答:比赛中的大题都明确规定了运行时间限制。

考生可以在自己的机器上测运行时间。

测评服务器的配置肯定好于考生的机器,必然会得出更短的运行时间。

 

  • 为什么自己环境运行结果没错,但是提交结果为0分呢?

答:可能是选错语言环境了。比如:自己用c++,提交时选了c

也可能是源代码中有违反规定的情况,比如:

Java中用了package语句

Java主类名字不是Main

C语言中用了非ANSI标准的函数

C语言没有在所有分支return 0

 

  • 测试用例是每一个都调用一次程序吗?重要

答:当然,各个用例的执行间严格独立,分别计分。

 

  • java 中有封装好的sort么?

答:有,java1.6 API中任何算法都可以直接调用。

Java collection中默认的sort算法也很高效了,除非你有特殊需求。

 

  • 一般算法题的只用iostream 头文件可以了吗?

答:对于c++是这样的。但你总会用到vector, list什么的吧,要不用c++没有什么优势啊。

 

  • STL能用吗?bits能用吗?可以使用bits/stdc++吗?可以用bits/stdc++.h头文件吗?

答:简单的标准:你用dev-cpp5.4没有做任何额外设置,编译通过了就可以。

 

  • 不加头文件写什么啊(笑哭)不能头文件?!那怎么办?不加头文件能编译?#include<>stdio也不行??万能头文件能用吗(不少人问到类似问题)

答:讲座中说的不包含是指不包含自己定义的头文件。因为正常的开发总是把一些结构、定义、常量等放在一个.h文件中,这是工程标准,学校也这样教的,但大赛中不允许。如果是标准的头文件(系统自带的)当然没问题。

 

  • C语言写的,编译器选C++可以吗?c++可以提交c代码么?

答:理论上c++完全兼容c,但你为什么偏偏要这么作死呢?

 

  • 自己写的包不可以用?

答:Java不能写package语句

C不能include自己的.h文件

 

  • 不能使用模块化编程?

答:不能。

模块化编程是为了大项目的清晰、易于维护,是盖高楼大厦用的。

搭个鸡窝直接来就好,还成立个鸡窝工程指挥部没意义。

 

  • 考试电脑死机有木有补偿时间?

答:如果是你写的程序给搞死的,当然不补偿,

如果是系统本身有问题,不跑程序也死,要补偿。

如果无法区分,就看你和监考老师谁更狠些了(赛场纪律要遵守哦)。

 

  • 蓝桥杯的题很严格吗?比如求个斐波那契数列需要涉及到动态数组、链表之类的吗?

答:严格是指哪方面?

用什么技术解决问题并没有限制,你自己能hold住的技术随便用。

但需要在考生须知许可范围内。

 

  • C++在比赛时比C有优势吗?

答:对高手有优势,因为可以用STL,STL可是集大成之作。

对特高手没优势,因为他们能比STL写的更好,跑得更快。

对零基础的没优势。中国高铁弄印度去,还不是车顶坐人,卖挂票,根本开不起来。

 

  • 考试的时候是在其他运行环境里写代码 然后把代码粘贴到网页上吧?

答:是的,但环境尽量使用组委会指定软件。

除非你是高手。

或者老手。

 

  • 编程大题有语言要求吗,比赛使用的是什么ide?

答:请阅读考生须知。

 

  • 类名错了怎么办?

答:只能默哀了。

  • 请问C++在解题时比C有优势吗?

答:参见第50问题。

 

  • 运行结果题去编译器运行能出来结果吗?

答:没看懂。

也没猜出来。

 

  • 所有数据都是要自己测试吗?

答:所有的测试数据不会给你看到。

自己可以编一些测试数据。

然后提交程序。

然后祈祷。

 

  • 考试时的DEV是自己下载的吗?还是安装好的?

答:赛点会安装好,但选手须会自己设置软件环境变量。

 

  • 代码填空题 有可运行的源代码吗?

答:既然是填空,当然有大部分代码,但未必是完整的,能不能运行看运气了。

比如c的代码可能没有include部分,java代码可能连类都没有。

 

  • 提交后没ac,之后经过折腾才ac会扣分吗?

答:很尴尬,目前大赛不能及时反馈结果,所以你无法知道自己的程序的执行情况,直到比赛公布奖项。

 

  • 考试的时候可以用MATLAB、计算器、Python吗?

答:随便用,不必客气,前提是赛点机器有这些软件。

 

  • 可以用手机算吗?

答:不可以,因为手机需要关机。

除非你的手机有关机计算功能。

 

  • 考试时候能使用电脑的其他软件吗?

答:电脑上任何资源都可以用,这个属于思考过程,与提交的结果无关。

 

三、       关于知识学习

(一) 有关比赛的能力要求

  • 请问比赛对于算法的要求高吗?

答:如果仅仅练习循环和递归暴力破解,运气好的话也能进决赛,但这样进去了决赛恐怕也只能一日游了

 

 

  • 需要很好的数学基础吗?需要什么数学基础?数学分析和高等代数的知识够吗?

答:如果不希望拿大奖,对数学的要求就不高,但小学,中学的数学还是需要的

 

  • Java是不是主要涉及基本语法,对算法要求较高,对于高级语法是不是没什么要求?

答:完全正确。

 

  • 必须把数据结构吃透吗?

答:如果要拿高分是必须的。但吃透了也未必能拿高分。

(二) 比赛考试范围

  • 经典算法有哪些啊?不太知道。算法范围可以划下么?c++和Java人数比多少啊?算法的范围有哪些呢?算法考哪几类?那么问题来了 考哪些算法?主要涉及那些类型的算法?复习应该以哪些算法为主? 复习应该以哪些算法为主? 60天复习重点应该以什么算法为主? 决赛主要考察什么算法?决赛考察什么算法会比较多?复习应该以哪些算法为主? 要看什么算法?

答:这不是一个可以统一回答的问题,因人而异。

已经画了张图,最基本的算法。

严格地说,算法并非可数名词,所以不知道一共有几个。短短的计算机历史上产生了可以独立讨论的成千上万的算法,广泛地分布在不同的领域中。

我们在竞赛中用到的大部分是属于“公共算法”的范畴。如果需要权威参考书,可见:《算法导论》,《算法》,这两部都是由外文原版翻译的。尽量参阅原文。

如果从未接触过算法,那么不要好高骛远,先弄明白循环和递归暴力破解。

如果有点小基础,可以阅读ACM类入门参考书。

如果本来就是ACM选手,………..嗯,应该不会提这个问题

 

总的来说,蓝桥杯大赛以搜索类的算法为主。

 

  • df深搜有更好的理解方法吗?感觉比赛中很多深搜的题目?

答:真名叫dfs,是图论类问题中十分基础,十分重要的算法。而且该算法的思想对解决其它类问题有很深的参考意义。

在解决具体问题的过程中就自然理解深入。没有问题的时候,无论如何都理解不深刻的。

 

  • 链表考不考?链表会考吗?

答:题面中可能会考,毕竟这个是基本的数据结构。

至于解决问题中用不用全在你自己了。

 

  • 听说比赛主要是考算法,也就是函数,指针是不是不需要特别了解

答:听说中国人只会造火箭、人造卫星、原子弹,其实他们连拖拉机、喷雾器的基本原理都还没有理解….你相信吗?

 

  • 比赛需要特别重视指针吗?

答:比赛并不重视某个具体技术,不会刻意考某个知识,它只重视问题的解决。

一切对求解问题而言重要的技术都无法被忽视!

 

(三) 算法如何学习

  • 只会很基础的东西,谈不上什么算法,空有一股热情,买了本算法导论又看不懂,老师请问可以提供什么帮助么

答:看不懂难的,就找本简单的书,从大学到幼儿园,总有一本适合自己。

学习是匀加速运动,不要灰心。

建议专门练习一下循环套循环的解题模式。

 

  • 如何提高和培养算法能力呢?总感觉这个挺难的?

答:华人平均智力世界第一。

如果你都说难,学不会,让他国人民情何以堪。

 

  • 有一定基础的话,想提高该学些什么算法呢?

答:先彻底熟练运用递归,然后研究排序算法、二分法、试探回溯法….

 

  • 有些基本算法不懂,背下来,有用吗?

答:算法不能靠背诵,一定要理解,题目千变万化

 

  • 算法都是直接学的吗?老师,是不是应该巧练算法才能懂得他的精髓呢?

答:关键是对A认为很巧妙的问题,对B一脸茫然啊。

很难找到一条对所有人都适合的捷径。

针对某个人的捷径或许存在,但关键是“云深不知处”。

所以,别怕吃亏,抓住任何一个问题都可以深究下去,它或许就是正确的门径。

 

  • 我看算法书经常无法长时间专注,有什么好办法可以让我专注的学那些算法和数据结构么?

答:还是我在讲座中提到的:

1找个伙伴

2跟个社团

一个人的战斗是效率最低、最痛苦的。

(四) 相关学习资料:书籍、练习题库、教学视频等

  • 以做题为主还是看书?初次参赛要怎么准备?练习题库?

答:看书,主要也是做书上的题目。关键是不能走马观花,宁可断其一指也要好过伤其十指。零基础不需要系统做题库,研究好基本问题。可以以历年的真题中简单的目标,逐步攻克。

 

  • 习题或者参考资料选择什么好一些?

答:零基础的先看基本原理、简单例子看博客或书。

有基础的多做题,深入理解。

 

  • 南阳OJ 怎么样?

答:没用过,杭电,北大,清华,浙大,交大的都很好啊。

 

  • 老师,练习题库中模拟试题对竞赛帮助大还是别的题都行?

答:练习题库中算法训练的题目有基础的也有中等的,适合初学者,算法提高会相对要难一些。OJ网站较难,适合有一定基础的同学。

 

  • 可以把嘉宾推荐给小白们的书列出来不?总结下推荐书籍吧?Java算法有什么好书推荐?

答:嘉宾推荐的不是给零基础的同学的。

对于Java的纯小白:

《java核心技术(卷I)》

《java大学教程》

《数据结构》

《算法java语言版》

  • C语言用哪本书?c的话是不是还需要会数据结构和数据库?

答:数据库不需要,语法的话学校教材足够了。

 

  • 有没有哪本书介绍怎么把算法写进代码里?

答:几乎所有讲算法的书都是讲代码的。需要仔细研读,不能一扫而过。

可以从学校的教材开始,比如《数据结构》

 

  • 有没有一些好的关于蓝桥杯涉及的算法学习视频推荐?有什么好的教学视频?

答:见蓝桥杯大赛官网“辅导资料”下的“辅导视频”栏目。

链接:http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=647

 

  • 有一个问题是小紫书和大白书都是c++的,java组的吃不消啊。

答:算法与语言无关,java的语法就是从c照搬了大部分的,应该能看懂啊。

要不快速学习一下c语言,这个网上视频铺天盖地。

(五) 暴力破解

  • 暴力破解是什么意思?还是不是很懂暴力破解。大一新生,暴力解题什么意思呢?小白表示不知道暴力怎么做。暴力是怎么做? 什么是暴力?

答:简单地说,暴力破解就是想办法把所有可能的情况逐一枚举。

复杂地说,就是能不重复、也不遗漏地把所有情况列举出来,然后边筛选边累积处理。

最基本的做法是:

1循环嵌套循环

2 递归

 

  • 暴力法就是穷举法吧?

答:差不多。

穷举也可以用比较有技巧的方式;暴力一般指简单粗暴的列举,没什么技巧在里边。

 

  • 对拍暴力是啥?咋做?对拍是什么?

答:暴力参见前述

对拍就是自动比较两套程序那套更有优势。

 

  • 关于暴力还是比较担心时间问题……暴力会超时吗?关键才四个小时你暴力得了几道题?

答:暴力不一定会超时,大题的测试用例有很多组,不是每组都很大的规模,规模小的当然不会超时。

 

(六)  其他

  • 刷题的时候很多时候容易遇到坎,一想就会想很久有的时候一天可能才做2-3道题,想问问各位大佬如何做到的一天10道题

答:可以把一道题做十遍。

熟练和深刻领会更重要。

 

  • DFS算法和回溯有差别吗?

答:本质上没有差别,不同的环境叙述上某个更贴切。

 

  • 动态规划那个啥DP不会-_-||怎么学啊?

答:不学,这个题目不会很多。

要么下决心,用更长的时间(大于60天)学会。

 

  • 老师后面讲的那首诗是什么意思呢…

答:诗人去世好多年了,我也没猜透意思呢。

  • 能不能讲讲如何判断时间复杂度,判断会不会超时

答:一般复杂度上百万次的就危险了,上千万就先pass吧。

但别直接放弃,大赛的大题测试用例有很多规模很小,一般不会超时,除非故意坑自己。

 

  • 每天做一道简单题够吗,可以拿奖吗?因为我没有那么多的时间搞算法,我也不搞算法,要弄别的技术。

答:如果其他同学都没怎么做简单题,应该有希望拿奖的。

 

  • 去哪里可以查询可以使用的系统函数,是不是只要调用类库,类库中的所有函数都是可以用吗

答:C语言看是不是ANSI标准

Java看是不是1.6支持的。

 

  • 我高二的时候,用java语言来判断一个图形是不是三角形算不算是算法

答:广义地讲是算法。

但这在大赛中一般认为是基本能力,不专门看待为算法。

 

  • 假如是面向企业的为什么不用11标准

答:因为企业最大资产是源程序,在已经存在的所有源程序中,89标准的占一半以上,加上99标准的占绝大部分,11标准的凤毛麟角。

而且技术并非唯一决定因素,企业要综合考虑许多问题。

比如,你的程序要与历史上某个程序接口,要与其它公司的程序接口,要与上个版本完全兼容,要适应某个老旧的设备,某段重要程序没有源代码,要满足某某不可告人的目的…..等等….

现实世界是微妙的,复杂的……

 

  • 就像C++的字符串一类的问题没JAVA好用一样,个个题型的偏重点都是什么

答:无法统计偏重点,因为命题组组成人员复杂,题目来源五花八门,没法控制或猜测偏重点,只能自己从往届赛题中感觉。

 

  • 只会hello world怎么办?

答:那就大胆写出来。

假装在修改,编译运行。

半小时后潇洒交卷,

事后你的指导老师可能会找你喝茶。

 

  • 老师,这里会提供这些年的真题和答案吗?

答:蓝桥杯大赛是全国最大规模的大学生竞赛,除考察选手的实力以外还考验选手的学习能力和动手能力等,大赛不是考试,因此大赛分享了近年的真题供选手们自行练习提高,不提供答案。真题请查阅大赛官网。

http://dasai.lanqiao.cn/pages/dasai/news_detail.html?id=644

 

  • 老师,专科组的如何针对一下呢,在这几个月里?

答:先研究一下最近两届的命题,因为专科组的风格稍微有些变化。

然后集中练习基础的暴力方法。

 

  • 模拟赛有吗?哪里有模拟赛啊?考前会有网上模拟吗?(不少人刷这个问题)

答:有的时候有模拟赛(在省赛之前),请关注蓝桥杯官网通知。建议多刷刷练习系统、oj的题,比做一套卷子更有价值。

第九届蓝桥杯(软件类)赛前60天备战分享会

  1. 一、 分享嘉宾

    1. 大赛特邀专家:于航(从第一届蓝桥杯大赛开始就是大赛的特邀专家顾问团成员之一,对蓝桥杯有着非常深刻的影响和了解)
    2. 第八届蓝桥杯国赛获奖选手:张浩威(国家特等奖)、黄诚博(国家特等奖)、柴文俊(国家特等奖)、辜思学(国家特等奖)、柳真(国家二等奖)、李文枭(国家二等奖)
  2. 二、 活动环节

    分享会的环节主要分为四部分:

    1. 蓝桥杯大赛介绍(分享嘉宾:于航)
    2. 备战建议(分享嘉宾:于航)
    3. 第8届国赛获奖同学经验分享
    4. 自由问答互动
  3. 三、 大赛介绍

    1. 大赛的特色:实战+趣味+、企业+ACM突出实战

      • 企业需要的是能够解决实际问题的人才,而非仅仅精通理论

        大赛和学校的考试很不一样。尤其对于初次参加大赛的同学,要适应这种模式,大赛突出实战,不考概念题、论述题、语法题等,而是让你去解决某个具体的问题,能够严格地去判定结果是正确还是错误的。这个判定是通过计算机来自动完成的。蓝桥杯的设计初衷,就是要在企业和高校之间建立一座桥梁,来解决现在就业、用人的悖论。

      • 趣味性

        大赛的题目很注重知识性和趣味性,具有开拓视野、提高兴趣这个作用。很多题目设计的很小巧、有趣,很值得一做。比如,考祖冲之的圆周率解法。这类题目通常不难,只要你认真、细致,基本功扎实,一般都可以轻松得分。

      • 企业要求

        企业注重能够解决现实问题的能力。大赛试题的设计正是以此为准则。代码填空题考验同学们读代码的能力,这个能力在工作中很重要。因为我们企业用人的时候,第一天到企业里参加工作,很可能不是写一个新程序,而是去维护已有的程序,而那个程序很可能是你的前任写的,可能离职了,这个程序可能写的也并不是很好,甚至是很烂,但是你要硬着头皮读下去,理解他的思路,并且能够修改他的错误,能够添加新的功能。所以说,读程序是很痛苦的,但是这种痛苦是必要的,读程序是很重要很重要很重要的(重要的事情说三遍)。硬着头皮去读别人的程序,可以使你很快地长进,跳出自己思路的圈子。理论和实际的可操作性有距离,企业注重可操作性。

      • ACM

        ACM的题目很难。而蓝桥杯大赛的题目,难度是有梯度的,就是说有些题目很简单,有些题目的难度和ACM一样甚至是超过ACM的难度。实际上,企业里大量急需的人才,并不是有ACM解题能力的顶尖级人才,一般企业里需要的人才是具备分析设计能力的人才。蓝桥杯大赛的设计是要突出大众性、普及性的特点。

    2. 比赛的形式

      比赛全程机考,没有纸质试卷。通过浏览器下载题目,提交答案。上图是同学们参赛时所使用的计算环境。考前要认真阅读考试须知。开考以后,下载题目是有密码的,输入密码的时候要注意大小写、中文等。同学提交答案可以边做边提交,避免都集中到考试快结束才提交。这样往往造成服务器压力过大,出现提交不上、网络出现错误等情况,造成不必要的损失。可以边做边提交。

    3. 赛程

      省赛4个小时,中间不休息。各省分别排名,按照一定比例进入决赛。

      决赛是全国统一排名次,也是4个小时,分上下午。

    4. 题型与评分标准

      题型一共有三种。初赛10道题或者11道题,决赛是5道题或者6道题。全程机器阅卷。特殊情况可能会人工干预一下。考试提交后不能立即反馈结果,可能以后会慢慢做到能够立即反馈结果。

      1. 结果填空题

        这种题目很简单,许多是送分题,只要结果、不计手段。你可以不去编程,可以使用excel、计算器等,只要是电脑里的资源都可以使用。答案一般是唯一的,多数情况下是一个整数。第一题尤为明显,被称为热身题。或者叫送分题。许多同学没有得分,可能是因为马虎、紧张、过于轻敌等情况。

        机器测评直接去比对你的结果和预设的答案是不是严格一致,所谓严格一致,比如人家答案是123,你的结果就不能是123逗号、123空格、中文123等。

      2. 代码填空题

        这类型题主要是考察选手阅读他人代码的能力,有的时候改一个程序比写程序还要困难,也很痛苦。这类题目肯定要先读懂题,你不读懂别人的思路,这个填空没法填,当然不绝对。有的选手没有读懂别人的程序也填对了,他是通过猜测、调试,把答案试出来了。这也是企业所欢迎的,能解决问题就是企业所需的人才。机器的评分过程就是把你填的代码代入到原来的程序的源代码里去,然后运行看看能不能得出正确的结果。不过,要注意的是,代进去的时候,源程序和题面的程序有可能是不一样的,题面数据有可能是用ABC这个串来做测试的,代进去的时候可能改成了XYZ,也就是说测试数据给换了一下,因为它要求你的代码要具有通用性。

      3. 编程大题

        结果填空和代码填空两种题型虽然数量比较多,但是占的分值并不是很多,分值主要集中在编程大题。编程大题要求必须要提交代码,代码必须经过编译通过、运行、得出正确结果,才能有机会得分。编程大题给的测试用例是许多个,可能有的题目能给出10个测试用例,每个测试用例测试过了,就得这一个用例的分数,每个用例是单独计分的。

        选手答题过程中,大题的失误也不少。比如,这个题目你能做出来的情况下,你在提交的环节失误了,这是相当可惜的。这里有一个典型的提交错误:比如C/C++组的同学在提交时需要选择使用的语言是C还是C++,你本来用的是C++,但是却选了C,造成编译不过。

        总的来说,大赛拿0分的人很多,每年都超过10%,有的组别最高能达到20%的零分率。然而很多人不是因为不会才拿了0分,而是因为一些低级的、不应该的失误导致的,比如有些同学在控制台操作、控制台命令这样的基本常识性的东西缺乏训练导致了失误。如果我们是初次参赛,一定要注意把基础打牢。

        另外有些同学有点好高骛远,一上来就做难题、做大题。大题是不好做的,又是编程又是在纸上画,最后没做出来,退而求其次,才去做难度比较低的题目,结果还是花了很多时间,把自己的心情搞乱了,最后剩下那些简单的题,也因为心情不好、紧张而做不好。所以,同学们在答题过程中要注意戒骄戒躁。

  4. 四、 备战建议

    1. 教材上划个范围?

      没办法划教材上的重点。大赛上真正考到的东西,占学校教程上的内容不到20%,实际用到的语法不足20%,所用到的语法也就是基本的选择、循环、赋值、数组、结构等东西,大赛真正要考的是算法。

    2. 算法是什么?

      算法的定义有广义和狭义,从广义上来说,算法即想法——解决问题的想法、编程的思路。所以,考算法,选什么语言区别不大,用JAVA还是C/C++都是一样的。 从狭义来说,分为不同的领域,相互之间有交叉有重叠,比如科学计算这个领域,算法的主要内容是研究线性方程组怎么求解、怎么对矩阵进行分块运算等;如果是可视化领域,和3D游戏就会有一定重叠,比如研究怎样做三角划分、着色、渲染、雾化等。通用的算法有很多,并且在动态地发展、添加。在比赛中想拿高分,那么需要对各个领域的算法都有所涉猎,尤其是一些前沿的东西,比如从博士论文、硕士论文、国外文献等出现的前沿讯息,都可能成为ACM的考核点。 但对于入门级选手来说,基本功才是关键、掌握基本算法。以真题的一个小例子进行说明 [真题:运动员分组] 短跑比赛,8条跑道。 运动员多的时候,要分组,要求:

      1. 组数尽可能少
      2. 每组间的人数差异尽可能小

      比如:人数=9,分组:5,4 比如:人数=26,分组:7,7,6,6 这道题,当人数少的时候,人工计算很简单,但是如果要将头脑中的计算过程通过计算机表达出来,就是成为程序员要过的第一关,即如何把人工能做的事情,转换成程序逻辑。解这道题的思路,可以用分豆子来类比讲解。将26颗豆子分到4个碟子里,一颗一颗分,每个碟子一次分一颗,最后,有两个碟子比另外两个多出来两颗豆子。碟子里的豆子数量的差距最多为1颗。这种算法,就叫贪心算法。 对于大多数普通本科同学来说,掌握好基本算法是一个比较合理的目标。在这里给出一张基础的算法分类图做参考,可以对照这张图,补补缺查查漏,看看自己还有哪方面能力有待提高。

    3. 怎样备战?

      不同的目标,有不同的方法,因人而异。

      参赛目标大致有以下三类: A、参赛体验,重在参与,能做上基本题就好 B、希望能进入决赛 C、希望能拿名次,获大奖 如果是上述第一种情况,那么要保证把暴力破解训练到位,尤其是多层循环的解题模式,要熟练。很多同学调侃蓝桥杯是爆破杯,实际上暴力破解并不是坏事。当进入到企业工作就会发现,那么高深精妙的算法不太能用到,一年也用不上几次,反而是暴力破解是天天写程序都在用的。此外,研究一下往届的大赛真题,上上练习系统,做一下基本题目。同时,推荐两本书,《Java大学教程》、《C++大学教程》。这两本书的课后练习题很有启发性,和我们国内教材死板的课后练习题很不一样,很多题也很有趣。 如果是上述第二种情况,这应该是大多数同学的目标,那么对暴力破解,要深入理解,除了循环,还需要熟练掌握递归,有一些递归基本的套路、基本的模式,要掌握。由于时间关系,讲座上就不展开了,可以网上搜索,自己学习和训练。在这里建议去研究一下小学的奥数题,很有价值,别小看小学奥数题,你未必能做出来,把小学的奥数题目用计算机计算出来,是一个很好的锻炼方式。推荐一个网站:欧拉计划。这个网站失血数学题目的,从很小的数学题到很难、很前沿的大型题目都有,可以一步步去训练。练习系统方面,蓝桥杯练习系统不用多说了,还有一个是青少年信息奥林匹克(NOI),那上面的题目相当难,对于没有经过任何训练的同学来说,很可能会的0分。

      如果是上述第三种情况,想拿国一、国二,就需要上ACM的训练网站,各高校都有OJ系统,北大、杭电、交大等。 提醒同学们在备战过程中不应该好高骛远,有些同学一上来就刷题,对刷过的题目,看看答案,似懂非懂就放过了,下次再碰到类似的题目,还是不会。所以同学们在学习和刷题的过程中,不能片面追进度、追速度,囫囵吞枣三个算法,不如研究透彻一个算法,把这个算法的精髓和精神彻底弄清楚。所以同学们一定要脚踏实地,千万别好高骛远。

      另外,把历届大赛题目练好研究明白也很重要。每一届大赛有6个组别,每个组别有10道题,虽然有重复,但题目的量也很大了,把5-6届真题的题目都练完,是很有必要的,可以在开考前的半个月或者10天,把这些题再做一做,找找感觉。 对于一般本科生,一定要注重基本能力和技巧的训练培养,例如:IO重定向、日期问题、散列法、枚举、缓存等,由于时间关系,讲座上就没办法具体去分别展开讲述了。 对于一般的选手,想拿高名次的话,应该去看一看ACM的入门书,比如刘汝佳的系列,比较易懂,适合入门选手。选手选书的原则:自己能看懂,题目做起来对自己而言不是太难。在此基础上进阶,比如准备过ACM、想拿靠前名次、特等奖等,可以系统的学一学数学基础(整数数论、复数与解析几何、组合数学等)和数据结构。推荐书籍:《算法导论》、《具体数学》。练习系统方面,国内外的ACM练习网站很多,还有大赛决赛的真题也可以做一做。

      关于学习方法,额外建议:

      • 立即行动!书非借不能读。 学习有规律性,要持续、累积,养成学习的习惯,而不是下决心就行。不要妄图买一本多厚的书、拷贝多少资料迷惑自己能学好就行。要立即行动,现在就去学习。
      • 你不是一个人在战斗 结对编程 —> 结队编程 一个人学编程很痛苦,很难坚持,最好找一个同伴一起学习,比如宿舍同学、同班同学、网上的好友等。编程虽然很痛苦,但越来越有价值。人工智能现在这么火,将来身边的智能设备会越来越多,需要很多程序员编程才能把这个庞大的需求量保证好。 结对编程:一个人写程序,另一个人在旁出谋划策和提出建议,两个人之间就会有观点和思路的碰撞、反馈。在国外,这种编程方式很风靡,但在国内还没有企业采用,可能出于成本考虑吧。 不要错过在网上参加某个讨论组或者学习群的机会,结伴学习。
      • 一夜间就成为程序员 变成技巧需要积累才能发酵,不能急功近利,需要思考、经验积累,有一个量变到质变的过程。 上述总结起来:找个伙伴,跟个社团,不要怕慢,坚持修炼!
  5. 五、 学生嘉宾参赛经验现场分享

    1. 李文枭,上海理工大学,第八届Java软件开发大学B组国赛二等奖

      我觉得学习算法首先要将基本的理论知识过一遍,如果有些学校算法课开的比较晚的话大家可以到coursera这些慕课平台上进行学习。 基础打好之后找到自己的学习薄弱点然后进行大量刷题并及时总结就可以了。在刷题过程中,尽量找志同道合的同学一起训练,如果学校有算法集训队,能够加入是最好不过了。当练习一道题被卡住很长时间的时候,尽量多找同学交流,不同的人有不同的思路,别人的一些想法很容易给我们一些启发。 要提一点的是有些经典的算法大家要熟悉一下,比如代码填空题曾经有考过快速排序和KMP字符串匹配算法,如果大家很熟悉的话可以马上填出来,节约大量时间主攻后面的编程大题。 另外,大家也要注意自己的做题策略,先做自己有把握的题目,能把自己会做的做对已经能有很不错的成绩了,剩余自己把握不大的或者没有思路的,考虑很简单的情况,毕竟通过每组数据都是有分数的。

    2. 柳真,中南民族大学,第八届Java软件开发大学B组国赛二等奖

      就我自己学习算法来说,我感觉前期关于算法基本概念基础学习过程很重要,比如理解弄懂基本排序类算法,比如选择排序、冒泡排序、快速排序和合并排序等;其次,就是理解相关算法思想,比如蛮力法、贪心法、分治法和动态规划法等;做完上述基本学习后,做做一些经典的算法题,比如八皇后问题呀,加深自己的理解。这些过程过后,再针对相关比赛,做专项习题训练,效果会很好。比如按照蓝桥杯模式,重点练练DFS,BFS算法,回溯也好好研究,再重点研究一下比赛真题,拿个好名次,不难。

    3. 辜思学,成都东软学院,第八届C/C++程序设计大学B组国赛特等奖

      首先,对于C和C++组的同学,应该先学一下C和C++的模板库,就可以开始练题了。接下来更重要的是找题和刷题。我推荐刘汝佳的《算法竞赛入门经典》,这本书被称为小紫书,这本书我认为是很基础也很有用的,里面的例题建议都做一遍。如果这本书还会觉得不够的话,可以再做他的大白书,算法竞赛入门经典的训练指南。最后,一定要花时间去刷一下蓝桥杯练习系统,熟悉一下历年真题。 接下来我就以我的比赛经验来简单我当时是怎样备战蓝桥杯,比赛现场是如何想的、如何做题、如何得分的。 开始的题是结果填空,这种题主要使用各种各样的方式去暴力做,什么交各种各样的方式呢?你甚至可以用命令行里面的计算器、用EXCEL表格,甚至用手算都可以。(老师插播:手算允许,只要不是抄的,或者没被抓住……) 第二部分题目是代码填空,需要将其中的代码拷到编译器中,模拟看一下这一行就是要实现什么,最后一定要运行去测试一下极限数据以及边缘的数据。这部分题目,少量是经典的算法或者是改编,所以平时需要熟悉注意去熟悉经典的算法。 最后的答题是直接编写完整的代码去实现特定的结果。如果没有一下子发现更优的解法,你要先写暴力,先把暴力的交上去,然后再看是否需要最优的解法,因为某些题,用暴力就可以解决。如果需要更好的解法,并且你找到了他,那么你最好将这个最优的解法和暴力进行对拍。如何对拍,你网上一搜,就可以搜到。根据对拍的解法,去算一下你提交对拍的代码还是暴力的代码,哪一个更优。

    4. 柴文俊,青岛理工大学,第八届Java软件开发大学B组国赛特等奖

      首先做题,对于小白来说,算法没怎么学全,就针对每一个算法一套一套题去做,把它们全部搞明白。我个人对于把这些题搞明白的方法是,写博客。以产出来衡量自己的努力,比如可以以写博客的数量来衡定自己到底学了多少算法,这是一个双赢的事情,除了能提高对算法的理解之外,还能提高自己的写作能力。 如果你参加了ACM的话,你就应该多培养比赛的状态,如果你是ACM精英队的,那么比赛就应该是常态,我个人针对蓝桥杯,参加了三届蓝桥杯,大一比较水,大二时我觉得能拿个国家一等奖,但只拿了国家三等奖,我觉得是因为状态没有很好。然后第八届比较重视,提前两三周基本上就在培养比赛状态。值得一提的是,比赛的前一天晚上,我留了上一届JAVA B组的国赛真题平时没做,就在考前一天晚上做,做到了大概一等奖的水平。 书籍方面,我也推荐刘汝佳的《算法竞赛入门经典》第二版,这本书对小白来说算是比较友好的,前几章是非常友好的,后面几章也会比较麻烦。这本书有很多编程的小技巧,题目也比较基础。还有一本书叫《挑战程序设计竞赛》,第一版,这本书我没有跟进去学,但我看它的代码还是不错的,算法分类也分的挺好,这本书也可以买来学习一下。 然后就是刷题,我大一时候刷的是北大、杭电的OJ,还有是中文的NYOJ。题还是要多做。 比赛的时候,要尽量做到最后,做到比赛结束的最后一秒,那样的话我觉得能思考的更多。以我为例的话,第8届的蓝桥杯的B组,总共是4个小时的比赛,我一直做到了3小时55分钟。

    5. 张浩威,北京大学,第八届C/C++程序设计大学A组国赛特等奖

      比赛整个过程可以分为考前、考试和考后。现在离考试还有60天,这60天我们能干些什么?如果说能从早到晚一直刷题的人,比如我高中的时候是一天做10道题目,以这个速度做题的话,60天就是600道题,其实每做10道题,人生就会迈向一个新的台阶,如果这么干的话,做完这600道题,那么我相信那一等奖是没问题的,当然在过年期间,需要走亲访友,同时各自也有各自的学业,刷600道题不太现实,刷两三百道题比较现实一点。有些同学平时有准备有积累,在最后冲刺一下子刷两三百道题太伤肝了,那么需要一些技巧性的训练。首先是先去了解大赛的规则,刚才老师和学长都说了题型,那么我们就需要根据题型去分配时间。根据经验,初赛有一半的题目是可以通过暴力来解决的,后面的题目,最难的也是通过搜索。所以我们在这60天,就多去练习这些通过模拟整个过程或者通过简单的搜索就能做出来的题目。说起来这个方法非常简单。但是我们要注意,蓝桥杯的赛制比较特殊,我们既要保证速度,又要有准确度,所以我们要根据这两方面来进行针对性训练。我们来说一下速度这个问题,首先是比别人做的更快更好,怎样才能做得更快呢?打代码的速度是一方面,还有一方面是要把代码在你脑中形成一个体系,比如说我先写什么、后写什么、最后写什么,一旦形成了这种体系之后,那么写代码的时候根本不需要用到脑子了,你只要先用脑子,之后就把脑子隔开,用手就可以了,这样你的代码一定会非常快。然后我们再来说一下精准度的问题。这个怎么训练呢?在平时看到一道题目时,肯定要上传到OJ来评判自己是否对。这时候要尽可能让自己第一次提交就通过它,这样在比赛的时候可以大大提高自己的正确率。还有刚才学长所说的,可以通过对拍,对拍就是你写一个暴力,然后再写一个暴力,然后两个代码跑一跑,看一下是否有错误。如果两个代码跑起来的结果不一样,那肯定其中一个代码是错的,除非你两个代码都写错了,并且错在同一个地方,否则你基本上有大概率有一个是能对的。 以上是考前的训练方法。接下来再说一下考试的时候如何发挥。只要把考前自己训练的体系给发挥出来就没有什么问题。考前给自己定个小目标,比如是二等奖或者一等奖,然后考试时大致估算一下难度,比如前三题看起来比较简单,第四题开始慢慢难起来了,那么基本上就是把前三题做完你就二等奖了,然后把第四题做完你就一等奖了,这时候只要保证最简单的那些题目不错,能达到你的目标,这时候就可以放松心态了。 然后再说一下考后,当时考完见到一个人我就说我考挂了,当时确实6道题有3道不会做。当天晚上老师发来信息说我拿了特等奖。所以说考后不用太在意自己考得怎么样,吃顿火锅回家等好消息就可以了。 最后建议大家熟悉一下比赛的平台以及题目的格式具体是怎么样的,刷两三套往年题,到比赛的时候轻松地发挥就可以了。

  6. 六、 自由问答

    详见《蓝桥杯60天备战分享会问题解答(软件类)