您的个人资料何时获胜

大家好! 我叫Lida,从事编程竞赛已有12年了。 (您好,Lida!)今年我加入了VKontakte团队,现在负责VK杯。 连续5个赛季都是体育节目冠军。 但是,现在是进行重大变革的时候了。


我们删除了大多数限制,取消了结对格式并添加了三个新的方向。 VK Cup 2019是奥林匹克竞赛程序员,移动开发人员,设计师和机器学习专家的在线竞赛,在圣彼得堡举行了盛大的线下决赛。


在本文中,我将告诉您我们提出了一个新的建议,而我的同事将为参与者提供建议。 VK Cup的注册时间为vk.cc/cup,开放至12月4日-仅剩一周! 有关轨道和舞台的所有详细信息都已删除。



VKontakte参加奥运会


许多IT公司都举行竞争-这是谈论他们面临的有趣任务的一种方式。 VKontakte团队是2012年第一批组织自己的锦标赛的团队之一。 开发人员自己发起了这些活动-国际编程比赛的获胜者一直在VK工作。 现在团队中有四位世界冠军。


开发人员创建的引擎是VKontakte的基础。 在他们当中,效率至关重要-每毫秒。 如何获得最佳性能? 深入了解算法和数据结构,并适应给定的内存限制。 对VK杯参赛者的代码提出了如此高的要求。


自2012年以来,格式有所变化,但本质保持不变:从14岁到23岁的参与者单独或以两个人的团队参加了奥林匹克竞赛。 如果您两次进入决赛,那么您将无法再参加。 现在该改变了。


放下限制


VK Cup 2019将以独奏形式举行。 我们会根据年龄和总决赛次数的限制来移除上限,因此今年,过去几年的最佳参赛者和经验丰富的专家将能够重返冠军。 但最重要的是-除了运动编程之外,还可以在机器学习,移动开发和设计方面竞争。 您可以同时参加多个曲目-当然,如果有足够的时间。


每个赛道将包括三回合:


  1. 资格考试将于12月6日至16日在线举行,并向所有人开放。 下一轮将是每个曲目中的256位最佳参与者。
  2. 我们还将在2020年2月在线进行排位赛阶段。 在这里,参与者将发现更复杂的任务和更短的时间。 每个曲目中最成功的决定的40位作者将进入决赛。
  3. 决赛将于2020年4月在圣彼得堡举行。 在全日对抗中,参赛者将争夺每条赛道的主要奖金-524,288卢布(2 ^ 19)。

追踪引擎


资格。 参与者将使用任何方便的编程语言在Codeforces平台上解决问题。 您甚至可以解决每个单独的测试问题,用双手解决问题。
排位赛阶段。 重要的是要尽快解决每个问题,以便获得更多分并获得决赛邀请。
结局。 参加者将按照标准Codeforces规则进行竞争:如果发现其他参加者的决策中有错误,他们将能够获得额外的积分。


Boris Minaev的提示


Borya是ICPC 2015编程世界冠军,在2015 VK杯第二名,VKontakte数据库团队负责人。


  • 以增加复杂度的顺序解决问题。 选择通过人数最多的参与者。
  • 如果任务没有让步,请不要循环执行。 立即为自己设定一个限制:“如果我在15分钟内不提出解决方案,那么我将继续进行下一个。”
  • 发送前测试解决方案。 确保在边界情况下运行它。 在此之前,请重新阅读对输入数据有限制的部分。
  • 有时可以根据条件的限制来提出解决方案的想法。 例如,您有一个任务,其中给出了n个对象。 如果n <10,则可能在解决方案中有必要遍历对象的所有排列。 如果n <20,则在2 ^ n中编写递归搜索。 如果n <1000,则针对n ^ 2进行动态编程。 如果n大约为一百万,那么很可能需要考虑线性解的方向。
  • 如果收到WA,请多次阅读代码,但仍然看不到错误,然后尝试编写一个更简单的解决方案。 然后在小型测试中比较原始解决方案和新解决方案是否始终给出相同的答案。 如果您要解决一棵不加权树的问题,则只需再次运行该解决方案,但选择其他根即可。
  • 使用CLion或IDEA之类的开发环境。 他们可以找到标准错误,例如未初始化的变量或无法访问的代码段。
  • 在代码中添加更多断言。 找到RE原因比WA容易得多。

追踪手机


资格。 我们将测试实现移动应用程序的标准屏幕通常需要的简单算法的知识,以及我们的移动平台的理论知识。 下一轮将有来自每个平台的128名参与者。
排位赛阶段。 有必要正确地确定优先级。 哪个更好-尽可能地准时或尽可能仔细地完成每个任务? 决赛将包括前20名开发人员。
结局。 每个参与者都必须证明自己的产品技能:仅使用上一轮开发的屏幕来提出,实施和提交新项目。


Oleg Smirnov的提示


Oleg领导Android团队VKontakte,并负责VK Cup移动开发轨道​​的任务。


  • 在比赛开始之前,请确保已配置了IDE(Android Studio),已连接了必需的插件,模拟器正在运行,并且有用于开发的真实设备。
  • 了解Gradle构建系统及其设置。
  • 阅读条款和条件,并了解您将需要支持的最低SDK。 不要为所有平台编写通用代码,请根据设置的条件解决问题。
  • 如果没有紧急需求,请不要在项目中使用NDK。 使用SDK几乎可以解决任何任务。
  • 注意申请权。 验证是否已发出所有权限请求。
  • 跟踪应用程序性能:文件系统,网络,流畅的UI动画。
  • 定义要使用的最小库集。 花时间解决任务,而不是研究图书馆。
  • 查看VK SDK的工作将很有用。

轨道设计


资格。 我们将确保参与者不仅可以开发单独的设计元素,而且可以注意到错误。
排位赛阶段。 我们提供开发VKontakte的各个元素或独立服务的接口。 重要的是要在想法的规模和开发时间之间找到折衷方案。
结局。 参与者将需要谈论他们的想法并提出设计。


Alexei Mazelyuk的提示


Lesha是一位高级VK设计师,并于2015年和2017年获得VK设计师大赛的冠军。


  • 将任务分解为较小的任务。 尝试分配时间和优先级以便及时。 如果您设法以比计划更快的速度进行操作,那么将有时间进行功能和改进。
  • 定义受众和背景。
  • 事先考虑您要使用的工具。
  • 记下想法。 选择最好的,然后继续与他们合作。 没有足够的时间来处理所有事情。
  • 纸和铅笔有时比图形编辑器更好。
  • 解决问题,不要画精美的图画。 趋势不容忽视,但一切都应该适当。
  • 明智地利用同事的成就。 有时最好准备一些东西,而不是重新发明轮子。 但是请记住,新的便捷解决方案的评级比下一个更高。
  • 如果有时间,请详细参与。
  • 介绍很重要! 需要将决定出售给陪审团。 使用简单明了的演示文稿。
  • 不要弯腰演示文稿中的文字数量,请使用视频。

追踪ML


资格。 作为答案,您将需要下载处理后的数据,并且将使用预定义的指标来评估每个决策。 任务中的数据可以脱机处理,甚至可以手动处理。
排位赛阶段。 参与者将开发的方法的代码将上传到测试系统-所有解决方案将在计算资源有限的情况下在相同的基础结构上进行测试。
结局。 参加者将解决困难的实际任务。


来自Danila Savenkova的提示


Danya在kaggle进入了梅赛德斯顶级选手。 他还是VK的高级程序员。


  • 对于本地验证,请尝试重现与测试组织者选择测试集时所使用的相同的分区原理(请注意时间(如果有)和ID)。 如果可能,请使用交叉验证。 这种方法实际上是开箱即用的,能够评估度量标准变化的重要性 。 破坏数据集时,请确保修复种子。
  • 训练并平均不同的模型。 这可能比一种模型更好-请记住中心极限定理。 具有不同sid的XGBoost也是不同的模型(主要是要记住使子样本<1和/或colsample <1)。 在这种情况下,XGBoost,CatBoost和LightGBM也是不同的模型。
  • 使用sklearn.Pipeline。 当model.fit包含从数据预处理到获得预测的整个流程时,它变得更容易使用,并且在本地验证中犯错误的机会也更少了。
  • 如果您要后期处理-请注意cross_val_predict,此功能将有很大帮助。
  • 做功能。 堆叠,混合,设置超参数-几乎每个人都可以做到这一点。 获奖者是那些提出最成功功能的人。 好吧,或者那些发现面孔的人。 或那些幸运的人。 这些因素的结合通常更有效;)



如果您仍然对VK Cup有疑问,请写信给VK VK的私人消息: vk.com/cup 。 在这里,您可以找到规则并监控锦标赛的进度。


希望您喜欢新的VK杯,我们将在圣彼得堡的决赛中与一些读者见面。 祝大家好运!

Source: https://habr.com/ru/post/zh-CN477792/


All Articles