大家好,我们此前举行的夏季课程宣讲会备受好评,很多家长私信小编希望能回看内容。因此,小编赶紧将宣讲会主讲内容的文字版进行了整理发布,Q&A 内容整理则在下一篇,同时请关注我们的 YouTube 账号“X-Camp Academy”,宣讲会内容已经上传完毕。

以下是主讲内容。

首先,我们对 USACO 做一个简单的介绍。
USACO 即 USA Computing Olympiad(美国信息学奥林匹克竞赛),分成4个级别,分别是 Bronze 入门级,然后到 Silver,然后到 Gold,最终的一个级别是 Platinum。最后还有一个美国国家集训队即 US Camp,但是它已经不在 USACO 的考级里。每年 USACO 会选出大约26个学生参与 US Camp,组织他们参加持续 7到10天的考试,最终选出最后的四位选手,代表美国国家队出征国际信息学奥林匹克竞赛(IOI)。
这个组织形式和中国的国家集训队,包括信息学奥林匹克竞赛的整一套体系是相匹配的。
USACO 每年举办好几次考试,其中最后一次考试叫US Open。在US Open之前有3次考试,前3次考试各有4个小时,最后一次考试是5个小时。在规定的时间之内,考生需要把复杂的题目进行理解和分析然后推导,并且使用算法来解决它,最终需要再把这个代码提交到官方网站上,然后通过官方网站的测试数据判断,获得那道题目的分数。
当考生考完某个级别的考试,达到了一定的分数线,这位学生就可以被 promote 到下一个级别。那么当学生到了 Platinum 级别之后,他将有可能获得一个该年度进入国家集训队的机会。X-Camp 去年就有一位孩子进入了美国国家集训队,今年则有四人(最新数据),并且我们已经有19位孩子在USACO 铂金级别(Platinum Division)。
USACO 竞赛支持不同的语言,但支持最多的还是 C++,当然也有参赛者使用 Java,少量使用 Python 以及 C语言。C++ 在编程竞赛的效率方面更加占有优势。X-Camp 在入门阶段会教孩子 Python,但到了一定级别后,我们就开始转为 C++,因为我们希望孩子不光有 Python 的基础,也有比较扎实的 C++ 基础,从而使得他们在编程竞赛里也能获得优势。

USACO 的晋级分数线,在不同的级别不同的场次都是不一样的。
以21年和22年的赛季为例,Bronze 级别的分数线基本是在700~750,偶尔在题目相对比较简单的场次,也会有800分的分数线出现;Silver 在这个赛季基本是650~750左右;Gold 则在650~750。到了 Gold 以后,平均下来看,今年每一场考试能够通过 Gold 到 Platinum,整个美国是少于20人的,所以含金量是非常的高。
在过去三年我们也做了一个数据统计,可以看到在下方数据统计图里,蓝色代表2019年年份,黄色代表2020,红色代表2021,随着年份的推进,参加 Bronze 的年人数从1万出头到接近一万五千,现在的话估计在19,000人左右,每年增长的速度都比较快,这说明有越来越多的孩子喜欢上编程,参与编程。
在考 Silver 的人数方面,2019年大概是在6000~7000左右,到了2020年就1万出头,今年的话跟去年比较持平。
Gold 和 Platinum 相对来讲人数会少一些,参赛人数在过去三年是一个比较一致的趋势:Gold略微比5000人多一点点,Platinum 更少,估计在一两千人左右,平均到每一场考试估计在300~400人,说明能到达高分段的人比较少。
看了每个级别的考试的参赛的人数,那么有多少人能够考过?在2019~2020赛季, Bronze 过的人数比较多,通过率大概在19%左右。到了去年和今年,就在10%出头以及15%左右。
综合来看,过去三年 Bronze 通过率就在15%左右。
Silver 在前年也就是2019~2020赛季,是在5%;在2020~2021赛季是6%左右;到今年的话也是有所降低。
而 Gold 的通过率大概在 2% 到 3% 左右。
题目的难度也是在逐渐增加。尤其是在今年,我们明显感觉到有个别题目原来应该出现在 Gold 这个级别,但现在开始出现在 Silver 这个级别的最难那道题。
Gold 那就更不必说,在两年前 Gold 和 Bronze 以及 Silver 类似,是偏知识性的这种级别,只要把知识点学过了,那么孩子就能够比较舒服的通过 Gold,当然也要做适当的练习。但是从去年开始包括今年,我们明显发现 Gold 题目出现了更多的套路,需要孩子投入更多的时间来做模拟测试,然后做更多练习。

下面我们聊一聊题型。
首先说 Bronze。我们对过去三年的题目做一个大致分析,题目有三种。第一种是 simulation,考生只需要用 algorithm 和 coding 实现一个process就可以。第二种是 greedy algorithm,这类题目相对有一点tricky,需要孩子有更多的 observation 以及 analysis 方面的训练。第三种就是 search,也就是我们俗话说的暴力法,就是要能用一种枚举的思路来思考问题。Bronze 级别,掌握了这三种基本题型的解题方法,在知识角度就没有太大问题,剩下的主要在编程能力方面,是否能够把这三种题目的 algorithm 转化为 coding,并且能够正确的通过 test case。
Bronze 总共三道题。很多时候 USACO 可能认为把第一道题放在最简单的一个位置,但其实从结果来反推并不是这样,有时候最后一道题反而是最简单的,所以推荐孩子上来不要看了第一题之后就立刻去写,而是先把三道题都看一遍。
我们应该努力把简单和中等难度两道题目拿满分。总共满分是1000分,Bronze 分数线在 700-750,两道题差不多是666分左右,也就是说我们并不需要最难的第三道题目完全做出来,只要能拿到一部分分数超出分数线,就能够通过 Bronze 考试。Simulation 这种题目推荐孩子掌握一个比较稳固的编程基础,另外读题目一定要小心,有时候读错一道题的话,可能花了更多的时间在思考上面,最后突然发现题目读错,那就损失比较大。
第二类题目是 Greedy Algorithm,它最重要的其实不是编程,编程部分通常来讲都非常的容易,更加难的一点是什么?是判断这道题是否能够用 greedy algorithm 来解决,这反而是最难的。我们课上也会讲各种各样 Greedy Algorithm 思路,那么这里有很重要的一点:我们很多时候不需要去证明 Greedy 的性质,因为证明有的时候会更加复杂更加难,很多时候是需要做一个假设,然后再找找看有没有反例能够推翻。如果没有发现很明显的反例,其实就可以试一试,因为 Greedy Algorithm 在写程序的时候往往简单,通过几个循环就能解决掉。所以我们一直告诉孩子,在遇到 Greedy Algorithm 的时候该怎么做。同时,Greedy 的算法因为复杂度较低,所以通常它的数字非常大,就是题目所出的数据范围会非常的大。
最后是 search 题目,主要是 dfs 和 bfs,然后需要孩子对 complexity 有一定的了解。这种题型有一种偏几何的题目,往往是跟矩形的边界判定,或者是坐标系有一定关系,但还没有难到计算几何的难度,所以这个地方只要把往年的一些几何题过一过,也就够了。
对于比较难的问题,我们不是特别推荐在 Bronze 级别做专门的准备,更需要的是什么?更需要的是孩子往更高的知识点学习,去学习 Silver 知识点,或者更高级的知识点。那么等到某一天回过头来,其实就已经形成了一个降维打击。
Bronze 里面难的题目往往就是 Silver 里面比较简单的题目,所以 X-Camp 的教学思路,就是孩子不要盯着眼前的这个级,希望他能够先去学更高级的东西,然后反过来再去比较轻松的解决 Bronze 的难题。
来到 Silver 级别,很明显就多了很多 topics,比如除了刚才的 simulation 以及 search 之外,增加了graph 还有DP,DP就是 dynamic programming 动态规划,还有 counting 和 data structure。其中 dynamic programming 这种题型是 21年新出现的,以前从来没有在 Silver 出现过,都是在 Gold 出现。本赛季 Silver 级别考试 Graph 出现的也越来越多,这样 Silver 也会比以前更加有挑战性。
今年,X-Camp 有 60% 参加 Bronze 考试的学生通过了。USACO Bronze 通过率大概在 15%。X-Camp 通过 Silver 到达 Gold 的,我们参赛的孩子达到 40% 左右,USACO 官方的平均rate在 6~10%左右。而 通过 Gold 到 Platinum 的比例,X-Camp 今年达到 33%,和 USACO 官方的 2~3% 通过率相比,提高了很多倍。
总结来说,X-Camp has a significantly higher pass rate in all USACO levels。

接下来我们分享一下,在 USACO 备考过程中都有哪些痛点,该怎么样去准备、去解决各种各样的困难。
我们遇到的最为常见的问题有以下几个:
其一,不知道该怎么学习来准备 USACO,即 “Where to start?”
其二,经常考完试看答案感觉不难,但是考场上就是做不出来,也想不出思路。
其三,自己在家学习 USACO 常考 topics 时遇到困难不知道该如何解决。
其四,做完了所有真题,但是一整个赛季下来四场考试都没考好,部分孩子受到很大的打击;还有一部分学生希望下个赛季能够继续冲刺,那么该如何准备、走怎么样一条路能够准备好下一个赛季?
接下来我们对于不同的 USACO 级别来提出建议,以上问题的答案也都包含在建议里。
在 X-Camp,Bronze 和 Silver 两个级别, 和 Gold、Platinum 以及 Camp,属于不同的两个领域。
Bronze 和 Silver 属于“知识性的级别”。我们从出题的结果反推官方思路,他们并非希望难住考生,而是希望在难度有所递进的情况下, 鼓励大家把知识学好学扎实。
所以相应的,在 X-Camp 进行课程设计时,我们不会塞给孩子大量的练习,而是集中于 Learning。具体来讲,我们希望孩子建立一个非常体系化的知识结构,这需要比较高效的成熟的结构化的课程体系,帮助大家减少选择的时间和试错的成本。只要学生在靠谱的机构有靠谱的老师,加上足够的投入,考过是迟早的事情,只是时间问题。
举例:在 X-Camp,我们是怎么帮助孩子通过 Bronze 和 Silver 的?
这两个级别最重要的是知识体系和知识结构。我们已经有五年经验,同时我们也有大量的孩子通过这两级考试。所以,非常成熟的课程结构加上非常经验丰富的教练,我们有足够的自信:在 X-Camp 学习 Bronze 和 Silver 是一个非常好的选择。
同时,我们鼓励孩子不要停留在 Bronze 和 Silvert 级别,就是你不必 focus 在过不过的问题上,而是 focus 在搭建自己的知识体系,提高自己的能力。只要学生继续往前走,继续学习 Gold 的知识点,比如前文提到的 DP 和 Graph,这些也都是 Google 或者 Facebook 面试比较难的题目,所以我们把知识体系打好,那么通过前两级别考试只是时间问题,同时也会为孩子的未来打好一个坚实的基础。
Gold、Platinum 和 Camp 这三个级别,更多属于竞赛类型的级别。具体来讲,把所有的知识点学过,把基本的概念搞清楚,然后能够写基本的 Code,这些只是一个起点,距离通过考试还有很长的距离。孩子还要花大量的时间去应付题目里面会出现的各种变化,包括各种各样的套路应对。个别题目的结论可能是20年前在算法领域的最前沿论文的结论,要让孩子在考场上完全把结论给推出来,难度非常高。所以学生不仅要掌握基本知识,还要把延伸出的变化全部掌握。怎么做?
首先是大量参加 mock tests。在 X-Camp,学生把基础打好之后,会有大量的 mock tests 帮助他们积累经验和提高应试技巧。我们有有一个班级,在 UASACO 赛季每周举行两场 mock tests,非赛季也要每月举行四场 mock tests。同时只参加 mock tests 还不够,我们要求学生要在考试里把最难的题目给订正完毕,这样才会有真正的提高。
其次要有高水平师资力量。X-Camp 会把 Gold 及以上级别的学习,往竞赛这个方向来强调。那么首先就对教练有很高的要求,除了日常上课,老师会在课后包括周末,都提供非常全方位的支持,尤其是 603 这个班级,也就是 X-Camp 最高班。我们有 NOI(National Olympic Informatics,中国信息学奥林匹克竞赛)和 IOI 的奖牌获得者作为教练,同时和国内的最强团队信友队有非常紧密的合作关系,师资力量非常雄厚。
最后,我们坚持 push student in the right direction。每个学期每个 USACO 赛季,我们都在动态的调整班级结构,以及根据每个孩子的情况,量身定制他们需要学习的内容。我们会帮助学生 resolve any blockers,有时候不仅是知识层面,可能是他的心理层面需要疏导。也有的时候是他时间投入不够,那么我们就要求孩子的 commitment,并且work really hard——这是一个硬性要求。因为在这么高级别的竞争中,大家都足够聪明,那么就要求孩子智商以外的素质,和全身心的投入。

|