体育编程:如何赢得比赛

哈Ha!今天,我想向您介绍伊尔库茨克体育节目社区负责人,节目竞赛的获奖参与者安德烈·楚马琴科,这些竞赛包括ICPC和以I.V.命名的全西伯利亚奥​​运会。山otto



我们与安德烈(Andrey)谈了体育节目编排,比赛准备以及他作为教练的工作。削减内容-对比赛参与者的有用和有害建议,动机问题,比赛中的故事,对统一考试和伊尔库茨克体育学院的态度。





ICPC学生团队编程竞赛2016决赛(来源:ICPC Live)



安德烈·楚马琴科Andrey Chumachenko) -伊尔库茨克州编程社区的创始人和负责人 ISU基础信息学硕士课程的学生,ICPC-2018、2019年学生世界锦标赛半决赛冠军(独联体国家),以I.V.命名的全西伯利亚奥​​林匹亚冠军。 Pottosina-2018,2019(独联体国家中),编程学生世界锦标赛四分之一决赛获胜者(东西伯利亚东部学生)-2018,2019,阿尔泰世界大学生运动会冠军-2019(俄罗斯学生和学童中),BSUIR编程冠军入围- 2018年,2019年。安德烈伊尔库茨克沸点



举办了免费的体育节目​​编程强化课程时引起了我们雷达的注意... 由于主题很热,我们决定详细了解所有内容。





吃什么



-什么是“体育编程”,现在他们在那里解决什么任务?



-对我来说,这主要是比赛,为他们做准备,当然还有一个特殊的人群。



毕竟,为某人编程就像是希普林的冬季两项:真正的运动,激情,热情。


至于任务,一切都很简单:他们花费了五个小时就能解决的任务,主要是算法,数学和任务执行。





2016年,UrFU的学生刚刚在布达佩斯赢得了挑战24国际编程冠军。然后,来自俄罗斯的七个团队进入了前十名(来源:codeforces.com)



-当今体育编程中最受欢迎的语言是什么?我在莫斯科理工大学应用信息学系的朋友(janka2330)研究了体育编程,并通过了测试。说很酷。他们与同学竞争,并将任务提交给spoj.pl(spoj.com),并用Ruby on Rails编写。



-语言竞争激烈。我最经常遇到C ++,Java和Python也很流行。另一个“新手”科特林最近势头强劲。很少使用Ruby on Rails或仅使用Ruby,但在某些比赛中,它们是受支持的语言列表。我自己总是用C ++编写,我的学生也一样。在我看来,当您需要快速编写代码时,这是最方便的方法。





比赛中最常用的语言





如何准备取胜



-告诉我们有关比赛的准备工作。你可能有秘密。



-在这方面工作了几年,我意识到每个人都有自己的培训方式。对于我来说,这是一种实践,全年解决问题。可以通过学习驾驶来类推:我滑冰的时间越长,获得的经验就越多。所以我们和学生一起骑。违反了规则,危险的转弯,超速行驶,但最终我们达到了理想的目标。



要发现问题,我们使用codeforces.com(定期进行在线回合),在此期间您需要解决一些问题,这些问题会给参与者的评分带来得分。


然后,我们跟踪进度,比较结果,并进行汇报,以在下一轮中取得更大的成功。





奥林匹克问题档案库codeforces.com



我们还将查看acm.timus.ru-俄罗斯最大的具有自动检查系统的编程问题档案库。现在,YouTube上出现了很多东西,但是我们不会持续使用它。如果有兴趣,我可以从那里建议一个绰号为Errichto的酷波兰程序员,他有自己的频道,在那里您可以挖掘很多有用的东西





波兰程序员在YouTube上昵称为Errichto的第二个频道



好吧,当然还有没有它们的书:例如,Donald Knuth的“编程艺术”。或“奥林匹克编程问题。比赛准备指南”,作者:史蒂芬·斯基埃纳(Steven Skiena)和米格尔·瑞维拉(Miguel Revilla)


参加者的生活技巧



-好的,有什么可以阻止您赢得体育节目奥林匹克竞赛的冠军?



-也许所有学生的敌人都是懒惰(开玩笑)。但是,认真的说,您需要专注于任务并暂时关闭负责各种日常事务的大脑部分。



在比赛前一天晚上训练也是非常有害的,特别是如果您还没有准备一年的话。


相反,我建议您休假一周,不要做出任何决定。如果您工作了很长时间,那么剩下的时间就会使大脑在累积的档案中井井有条。



在比赛本身,不听您的命令并领先机车是一个很大的错误。这将面临罚款和类似麻烦。好吧,追求完美的程序员会冒着一个任务去追求完美解决方案和干净代码的风险。这并不意味着您无论如何都要做所有事情,但是最主要的是不要过度做。



-要赢得比赛,您需要做什么?



-根据我的感觉,要取得巨大的成功,您需要有点生气,但是在您的职业生涯初期-保持冷静的态度,并坚持计划。



什么时候成为程序员



-告诉我们您在体育节目编排方面的道路。



-我想我很晚才开始沉迷于这个话题:只有在学校的高年级,我才开始认真学习C ++并参加伊尔库茨克大学举办的奥林匹克竞赛。然后,已经进入ISU,我遇到了一位支持体育编程运动的老师,并开始与他一起学习。因此,一点一点地,对我来说体育节目不再只是一种爱好,我认真对待,开始积极参加比赛并成长为教练。





安德烈(Andrey)在伊尔库茨克(Irkutsk)八月份的训练营中研究了奥林匹克问题之一



-您认为现在开始上高中为时已晚吗?编程真的可以与专业运动相提并论吗?在专业运动中,几乎三岁的孩子就被送来了?



-当然,这不足以让一个孩子在三年内学习算法,尽管如果他突然发现它很有趣,那就欢迎他。我什至知道一些针对学龄前儿童的编程教程。



但是,除了高中生,学生和已经很熟练的程序员外,在比赛中我遇到了五年级或六年级的学生,他们的知识并不逊色于学生,甚至掌握了一切。


因此,越早越好。



考试是一门痛苦的科目



-自从我们开始谈论学童以来,您如何看待统一州考试以及衡量知识的类似标准?尽管纯粹是技术性的,但是编程还是一种创造性的专业。



-我绝对是这样的事实:学校,尤其是大学里的科目是可选的,一个人可以从他喜欢的所有种类中进行选择。用这种方法学习会更加愉快,并且结果显而易见-当您坚持进行所有操作时,您无法进行比较。



至于统一州考试,这是一个痛苦的话题。在这里,我可以讲述另一篇文章的故事。



涉及数学或计算机科学考试时,USE实际上包含许多有趣且有用的任务。是的,它不是完美的,有缺陷,有实验,没有个人的方法,但是否则,毕业生的大量知识将不被重视。统一州考试有缺陷,但是没有更好的发明。



入学也主要是由教师设计的,但是客观性和标准性较低,一切都由一小部分人控制。使用这种方法,我什至不想谈论腐败,贿赂和不需要的东西的填充。



现在,您可以根据奥运会的成绩进入大学。对于顶尖学生来说,这很酷,只有10%。其余的呢?只有考试。


是的,列表中有一些简单的三级奥林匹克运动员,但它们通常更加笨拙或包含考试中的问题。



另一件事是考试的态度和方式。最重要的是,被父母,社会,老师赶上的所有歇斯底里。太多了。这些老师通常完全没有能力为学童准备考试。这与考试的难度无关-它没有什么超自然的。关键在于教师水平低下,他们的薪水以及国家对他们的态度。学童也沿着链条受苦。



关于一般标准-当然,教育应朝着灵活性发展。就像我说的那样,对于小学生来说,自己选择感兴趣的科目将是一件好事。 USE在这方面还不错:您可以将其用于任何学科。但是理想情况下,应该学会将学生视为一个个体。



-在奥林匹克奥林匹克竞赛评估知识方面,您没有看到类似的刻板印象吗?还是那里的一切都不同?



-奥林匹克问题的实质在于其巨大的非标准性。是的,您会不时遇到“按钮手风琴”任务。有一些标准,基本技术和算法的任务。但是在奥林匹克运动会上最重要的事情是能够应用这些技术,将它们组合起来,达到使用它们的地步,并了解解决方案的数学思想。这绝对是超越所有模板的独特功能。



为什么小学生学习体育节目



-学生和学童加入体育节目制作社区并参加奥林匹克运动会的动机是什么?体育编程可以教给他们什么,它有助于培养哪些技能?



-动机完全不同:有人来学习编程语言并获得更多实践和算法知识,因此有人想尝试一下自己的能力(参加奥林匹克运动会是另一项考验)。有些人会收集作品集以供大学或未来工作之用,他们希望在比赛中被IT公司关注。有些人是为了交流,支持和发展社区而来的。



. , , .


而且,当然是团队合作,这里的一切都像成年人一样:将您的项目付诸实施,您需要能够在团队中有效地工作。嗯,编程(语言,算法的知识)内的开发尚未取消。



-您在体育编程社区中正在做什么?



-今天,我训练学生,我们去参加奥林匹克运动会和体育节目竞赛。在我的学生中,有2019年学生世界编程锦标赛四分之一决赛(东西伯利亚的学生)的获奖者,2019年学生世界编程锦标赛ICPC半决赛的西伯利亚站点的获奖者,2019年编程的阿尔泰世界大学生运动会的获奖者,2018年和2018年的巴托辛奥运会的决赛入围者。



计划建立一所成熟的体育节目学校,在那里可以与五年级的孩子一起学习。希望我们会在十月发布。



我还尝试与IT公司建立联系,以便为我的学生获得就业机会。



另外,我们正在组织编程比赛,不久前我们举办了长达11天的密集比赛。几乎每天都有五个小时的比赛,然后是对问题的分析-所谓的错误工作,以及讲座(关于算法的一点理论)。我和我来自MEPhI的朋友担任培训师。强化班的参与者是来自乌兰乌德(布里亚特共和国)的ENTER奥林匹克训练中心的学童和来自伊尔库茨克的学生,他们定期参加体育节目奥林匹克竞赛。











— . , , . : , , . — — , , . : ? — , , …



-我觉得很好。是的,您需要快速工作,但同时要清楚,因为否则系统将无法接受任务。对于错误的答案,也没有人希望受到惩罚。您需要注意细节,因此奥林匹克运动员之间对问题的理解水平得到了很好的提高。



由于维护周期只有五个小时,因此有时会影响代码的清洁度,但是参与者的经验越多,他们遵循代码的就越紧密。



-分享比赛中有趣的故事。



-我们所有有趣的故事通常与任务有关。例如,我曾经长时间在解决方案上苦苦挣扎,因为我没有注意到短语“无解决方案”必须在字母重新排列在一个地方的情况下显示,即没有解决方案。



或者,在去年的世界锦标赛四分之一决赛中,我们将问题发送到系统以在比赛结束前两秒进行检查,最终问题得以成功解决。这样的事情总是发生在只会增加兴奋的情绪上。






关于我们的AI项目加速器的一分钟广告



我们已经开始接受Archipelago 20.35的应用程序-对于使用机器学习和数据分析方法进行项目的人员来说,这是一个教育密集型课程。该项目可以是商业,社会,科学项目-或编写您的版本。在20.35群岛,将有很大的机会升级自己和您的项目,组建团队,获得赠款,寻找赞助商,因为开发基金和实施AI的公司已表示对开发感兴趣。



选拔和预加速培训课程是免费的。而且,如果您在Habré上撰写您的项目,那么您在资格评定中会获得加分!我们将在博客中告诉您最有趣的项目。






All Articles