Quand gagner est votre profil

Bonjour à tous! Je m'appelle Lida et j'organise des compétitions de programmation depuis 12 ans. (Bonjour, Lida!) Cette année, j'ai rejoint l'équipe VKontakte et supervise maintenant la Coupe VK. Pendant 5 saisons, ce fut un championnat de programmation sportive uniquement. Mais le temps est venu de changements majeurs.


Nous avons supprimé la plupart des restrictions, annulé le format de paire et ajouté trois nouvelles directions. VK Cup 2019 est une compétition en ligne pour les programmeurs de l'Olympiade, les développeurs mobiles, les concepteurs et les spécialistes de l'apprentissage automatique avec une grande finale hors ligne à Saint-Pétersbourg.


Dans cet article, je vous dirai que nous en avons inventé un nouveau, et mes collègues feront des recommandations aux participants. L'inscription à la VK Cup est ouverte sur vk.cc/cup jusqu'au 4 décembre - il ne reste qu'une semaine! Tous les détails sur les pistes et les étapes sont sous la coupe.



VKontakte pour les Jeux olympiques


De nombreuses sociétés informatiques organisent leurs concours - c'est une façon de parler des tâches intéressantes auxquelles elles sont confrontées. L'équipe VKontakte a été l'une des premières en 2012 à organiser ses propres tournois. Les développeurs eux-mêmes les ont initiés - les lauréats des concours internationaux de programmation ont toujours travaillé chez VK. Quatre champions du monde dans l'équipe maintenant.


Les moteurs que les développeurs créent sont le fondement de VKontakte. C'est en eux que l'efficacité est particulièrement importante, à chaque milliseconde. Comment atteindre des performances maximales? Connaître en profondeur les algorithmes et les structures de données, et s'adapter également aux limites de mémoire données. Ce sont ces exigences élevées qui sont imposées au code des participants à la Coupe VK.


Depuis 2012, le format a un peu changé, mais l'essence est restée la même: les participants de 14 à 23 ans ont concouru à la programmation de l'Olympiade, seul ou en équipe de deux personnes. Si vous avez atteint la finale deux fois, vous ne pouvez plus participer. Il est temps de changer.


Ă€ bas les restrictions


La VK Cup 2019 se déroulera en format solo. Nous supprimons la barre supérieure en fonction de l'âge et de la limite du nombre de finales. Ainsi, cette année, les meilleurs participants des années précédentes et des spécialistes expérimentés pourront revenir au championnat. Mais le plus important - en plus de la programmation sportive, il sera possible de concourir dans l'apprentissage automatique, le développement mobile et la conception. Vous pouvez participer à plusieurs pistes en même temps - si, bien sûr, il y a assez de temps.


Chaque piste se composera de trois tours:


  1. La qualification se déroulera en ligne du 6 au 16 décembre et sera ouverte à tous. Le prochain tour sera les 256 meilleurs participants de chaque piste.
  2. Nous organiserons également l'étape de qualification en ligne - en février 2020. Ici, les participants trouveront des tâches plus complexes et un temps plus court. 40 auteurs des décisions les plus réussies dans chaque piste iront en finale.
  3. La finale se tiendra Ă  Saint-PĂ©tersbourg en avril 2020. Dans la confrontation Ă  plein temps, les participants concourront pour le prix principal de chaque piste - 524 288 roubles (2 ^ 19).

Moteur de piste


Qualification. Les participants résoudront les problèmes sur la plate-forme Codeforces dans n'importe quel langage de programmation pratique. Vous pouvez même résoudre des problèmes avec vos mains, en séparant chaque test individuel.
Étape de qualification. Il sera important de résoudre chaque problème le plus tôt possible afin de marquer plus de points et d'obtenir une invitation à la finale.
La finale. Les participants concourront selon les règles standard de Codeforces: ils pourront obtenir des points supplémentaires s'ils trouvent des erreurs dans les décisions des autres participants.


Conseils de Boris Minaev


Borya est le champion du monde de programmation ICPC 2015, 2e place de la VK Cup 2015, à la tête de l'équipe de base de données VKontakte.


  • RĂ©solvez les problèmes par ordre croissant de complexitĂ©. Choisissez celui qui a dĂ©passĂ© le plus de participants.
  • N'allez pas en cycles dans une tâche si elle ne vous cède pas. Fixez-vous immĂ©diatement une limite: «Si je n'avance pas dans la solution en 15 minutes, je passe Ă  la suivante.
  • Testez la solution avant de l'envoyer. Assurez-vous de l'exĂ©cuter sur les cas limites. Avant cela, relisez la section avec des restrictions sur les donnĂ©es d'entrĂ©e.
  • Parfois, l'idĂ©e d'une solution peut ĂŞtre inventĂ©e en fonction des restrictions de la condition. Par exemple, vous avez une tâche dans laquelle n objets sont donnĂ©s. Si n <10, alors peut-ĂŞtre dans la solution il est nĂ©cessaire d'itĂ©rer sur toutes les permutations d'objets. Si n <20, alors Ă©crivez la recherche rĂ©cursive dans 2 ^ n. Si n <1000, proposer une programmation dynamique pour n ^ 2. Et si n est d'environ un million - très probablement, vous devez penser dans le sens d'une solution linĂ©aire.
  • Si vous avez reçu WA, relisez le code plusieurs fois et ne voyez toujours pas l'erreur, puis essayez d'Ă©crire une solution plus simple. Comparez ensuite sur de petits tests si les solutions originales et nouvelles donnent toujours la mĂŞme rĂ©ponse. Si vous rĂ©solvez un problème sur une arborescence non pondĂ©rĂ©e, exĂ©cutez Ă  nouveau la solution, mais sĂ©lectionnez une racine diffĂ©rente.
  • Utilisez des environnements de dĂ©veloppement comme CLion ou IDEA. Ils peuvent trouver des erreurs standard comme des variables non initialisĂ©es ou des morceaux de code inaccessibles.
  • Ajoutez plus d'assertions Ă  votre code. Trouver la raison RE est beaucoup plus facile que WA.

Track Mobile


Qualification. Nous testerons la connaissance d'algorithmes simples qui sont souvent nécessaires pour implémenter des écrans standards d'applications mobiles, ainsi que les connaissances théoriques de notre plateforme mobile. Le prochain tour sera de 128 participants de chaque plate-forme.
Étape de qualification. Il sera nécessaire de prioriser correctement. Quel est le meilleur: être le plus à l'heure possible ou exécuter chaque tâche avec le plus de soin possible? La finale inclura les 20 meilleurs développeurs.
La finale. Chaque participant devra démontrer ses compétences produit: monter, implémenter et soumettre un nouveau projet en utilisant uniquement les écrans développés lors du cycle précédent.


Conseils d'Oleg Smirnov


Oleg dirige l'équipe Android VKontakte et a composé des tâches pour la piste de développement mobile VK Cup.


  • Assurez-vous avant le dĂ©but de la compĂ©tition que vous avez configurĂ© un IDE (Android Studio), que les plugins nĂ©cessaires sont connectĂ©s, que l'Ă©mulateur fonctionne et qu'il existe un vĂ©ritable appareil Ă  dĂ©velopper.
  • Comprendre le système de construction Gradle et ses paramètres.
  • Lisez les termes et conditions et dĂ©couvrez le SDK minimum que vous devrez prendre en charge. N'Ă©crivez pas de code universel pour toutes les plates-formes, rĂ©solvez le problème en fonction des conditions dĂ©finies.
  • S'il n'y a pas de besoin urgent, n'utilisez pas NDK dans le projet. Presque toutes les tâches peuvent ĂŞtre rĂ©solues Ă  l'aide du SDK.
  • Faites attention aux droits de candidature. VĂ©rifiez que toutes les demandes d'autorisation sont effectuĂ©es.
  • Gardez une trace des performances de l'application: système de fichiers, mise en rĂ©seau, animations d'interface utilisateur fluides.
  • DĂ©finissez l'ensemble minimal de bibliothèques avec lesquelles travailler. Utilisez le temps pour rĂ©soudre la tâche, pas pour Ă©tudier les bibliothèques.
  • Il sera utile d'examiner le travail du SDK VK.

Conception de la voie


Qualification. Nous veillerons à ce que les participants puissent non seulement développer des éléments de conception individuels, mais également remarquer des erreurs.
Étape de qualification. Nous proposons de développer des interfaces d'éléments individuels de VKontakte ou de services indépendants. Il sera important de trouver un compromis entre l'échelle de l'idée et le temps de développement.
La finale. Les participants devront parler de leur idée et présenter le design.


Conseils d'Alexei Mazelyuk


Lesha est une designer senior VK et lauréate du concours VK Designers en 2015 et 2017.


  • DĂ©composez la tâche en plus petites. Essayez d'allouer du temps et de prioriser afin d'ĂŞtre Ă  l'heure. Si vous parvenez Ă  faire quelque chose plus rapidement que prĂ©vu, il y aura du temps pour les fonctionnalitĂ©s et les amĂ©liorations.
  • DĂ©finissez le public et le contexte.
  • Pensez Ă  l'avance aux outils que vous souhaitez utiliser.
  • Notez des idĂ©es. Choisissez le meilleur et continuez Ă  travailler avec eux. Pas assez de temps pour tout.
  • Le papier et le crayon fonctionnent parfois mieux qu'un Ă©diteur graphique.
  • RĂ©solvez le problème, ne dessinez pas de belles images. Les tendances ne doivent pas ĂŞtre ignorĂ©es, mais tout doit ĂŞtre appropriĂ©.
  • Utilisez judicieusement les rĂ©alisations de vos collègues. Parfois, il vaut mieux prendre quelque chose de prĂŞt, plutĂ´t que de rĂ©inventer la roue. Mais n'oubliez pas que les nouvelles solutions pratiques sont mieux notĂ©es que la prochaine copie.
  • Engagez-vous en dĂ©tail si vous en avez le temps.
  • La prĂ©sentation est importante! Besoin de vendre la dĂ©cision au jury. Utilisez une prĂ©sentation simple et claire.
  • Ne vous pliez pas avec la quantitĂ© de texte dans la prĂ©sentation, utilisez la vidĂ©o.

Track ML


Qualification. En réponse, vous devrez télécharger les données traitées et chaque décision sera évaluée à l'aide d'une métrique prédéfinie. Les données de la tâche peuvent être traitées hors ligne ou même manuellement.
Étape de qualification. Le code de l'approche que les participants développeront sera téléchargé sur le système de test - toutes les solutions seront testées sur la même infrastructure, dans des conditions de ressources informatiques limitées.
La finale. Les participants résoudront une tâche pratique difficile.


Conseils de Danila Savenkova


Danya a inscrit les meilleurs concurrents Mercedes Ă  kaggle. Il est Ă©galement programmeur VK senior.


  • Pour la validation locale, essayez de reproduire le mĂŞme principe de partitionnement qui a Ă©tĂ© utilisĂ© lorsque les organisateurs du test ont sĂ©lectionnĂ© l'ensemble de test (faites attention Ă  l'heure, le cas Ă©chĂ©ant, et Ă  l'ID). Si possible, utilisez la validation croisĂ©e. Cette mĂ©thode est pratiquement hors de la boĂ®te en mesure d' Ă©valuer l'importance des changements dans la mĂ©trique . Assurez-vous de corriger la graine lors de la rupture de l'ensemble de donnĂ©es.
  • Former et faire la moyenne des diffĂ©rents modèles. Cela peut fonctionner mieux qu'un modèle - rappelez-vous le thĂ©orème de la limite centrale. XGBoost avec diffĂ©rents sids sont Ă©galement des modèles diffĂ©rents (l'essentiel est de ne pas oublier de faire un sous-Ă©chantillon <1 et / ou un colsample <1). XGBoost, CatBoost et LightGBM sont Ă©galement des modèles diffĂ©rents dans ce contexte.
  • Utilisez sklearn.Pipeline. Lorsque model.fit inclut l'ensemble du pipeline depuis le prĂ©traitement des donnĂ©es jusqu'Ă  l'obtention des prĂ©dictions, il devient beaucoup plus facile Ă  vivre et beaucoup moins susceptible de faire des erreurs avec la validation locale.
  • Si vous voulez postekat - faites attention Ă  cross_val_predict, cette fonction vous aidera grandement.
  • Faites des fonctionnalitĂ©s. Empiler, mĂ©langer, dĂ©finir des hyperparamètres - presque tout le monde peut le faire. Les gagnants sont ceux qui ont proposĂ© les fonctionnalitĂ©s les plus rĂ©ussies. Eh bien, ou ceux qui ont trouvĂ© un visage. Ou ceux qui ont de la chance. Et le plus souvent, une combinaison de ces facteurs fonctionne;)



Si vous avez encore des questions sur VK Cup, écrivez aux messages privés de VK VK: vk.com/cup . Vous pouvez y trouver les règles et suivre l'avancement du championnat.


J'espère que vous apprécierez la nouvelle Coupe VK et nous rencontrerons quelques lecteurs lors de la finale à Saint-Pétersbourg. Bonne chance à tous!

Source: https://habr.com/ru/post/fr477792/


All Articles