エクセレンスのコード

なぜ私たちはスポーツプログラミングを愛し、なぜあなたもそれを愛すべきなのか。



画像



スポーツプログラミングは、学校や学生の大会からワールドカップの決勝戦まで、さまざまなレベルのトーナメントを組み合わせています。 最大の国際企業がコンテストを開催し、 ACM-ICPCのような評判の良いコンテストを主催しています。 私たちのチームにはプログラミングの世界チャンピオンが4人います。そして、 CodeForceと一緒に、 VKontakte独自のトーナメントであるVK Cupを開催します。



画像

VKontakteマネージングディレクターAndrey Rogozov、Codeforceの創設者Mikhail Mirzayanov、VKカップ2017の受賞者と受賞者



チャンピオンはどこから来たのですか?



多くの場合、すべては学校から始まります。コンピューターサイエンスのコンテスト、学生のコンテスト、そして国際選手権のステージです。 スポーツプログラミングには、まず、多くの独創的な思考が必要であり、標準的なパターンに基づいて行動する必要はありません。 それにもかかわらず、オリンピックの問題を解決する能力も訓練する必要があります。 集まり、講義、そして無限の課題の解決-これらはすべて、普通のアスリートのトレーニングを連想させます。



すでに別の専門的な道を選択している場合、動揺しないでください。 スポーツプログラミングの世界をもっと簡単に見ることができます。



Codeforcesプラットフォームでは、誰でもさまざまな難易度の問題を解決できます。 評価ラウンドの枠組み内で解決された各問題について、参加者はポイントを受け取ります。 これらのポイントに基づいて、ラウンドの参加者がランク付けされ、 評価が取得されます。 ラウンドの終了後、自分で解決策を見つけられなかった場合は、解決策の分析を読むことができます。 プロジェクトが蓄積してきた長年にわたるタスクの選択は印象的です、 あなた自身を見てください



プログラミング競技は、コーディングの方法を学び、データ構造を理解し、アルゴリズム的思考を開発するための魅力的で効果的な方法であると確信しています。 参加してみてください。Codeforcesラウンドは誰でも参加でき、毎週開催されます。 私たちの目標は、各参加者に興味深いタスクを提供することです!



Codeforcesの創設者、ミハイル・ミルザヤノフ


トーナメントとタスク



トーナメントの詳細はさまざまですが、一般的な原則は変わりません。 通常、参加者には厳しく制限された時間が与えられ、タスク自体は複雑さのレベルに応じて「コスト」によってランク付けされ、決定は既製のテストのセットを使用して評価されます。 例外はありますが、最も人気のあるスポーツプログラミング言語はC ++です。 たとえば、VK Cup 2017のラウンドの1つでは、各問題を別の言語で解決する必要がありました。



競技会は、参加者の年齢制限の有無にかかわらず、個人およびチームで行うことができます。 トーナメントには特定のテーマがあります-例えば、AI、交換戦略、または古典的なアルゴリズム。 タスクは、リモートサーバーをハッキングするか、合成データセットで良好な結果を得るためにニューラルネットワークを作成することです。



タスクの作成は別の技術であり、作成者は参加者自身よりも準備が必要です。 過去の勝者は、しばしば新しいトーナメントのタスクを書くことに参加します。 良いタスクには特徴的な特性があります:



  1. 解決できます。
  2. 割り当てられた時間で解決できます。
  3. 解決策を検証するために、正しい解決策が機能するテストのセットを作成し、間違ったテストを作成します-エラーを発生させます(または実行時間とメモリサイズの制限に適合しません)。
  4. 彼女は面白いです。 オリンピックの問題は「真正面から」解決されるわけではなく、基本的なアルゴリズムが条件の背後でスキャンされても、ここでそれを適用する方法を理解するために慎重に考える必要があります。


経験豊富な競合他社はすでに数千の異なるタスクを見ており、それらを詳細に覚えることはめったにありませんが、著者は問題の活発な説明を追加しようとします。 Codeforcesアーカイブには、燃えるような愛の流れ、「フィボナクシビリティ」、およびVasyaのヒップスターに関するタスクがあります。 これをスキップするには?



勝利後



一流のコンテストの勝者は、最も有名なIT企業をスタッフに迎えたいと考えています。 コンテストを要約する前でも、求人が参加者を待っていることがあります。



これは驚くことではありません。 明らかなことに加えて(そのような人々は賢い)、多くの場合、スポーツプログラミングの経験は開発者に利点をもたらします。 彼は困難を恐れません。なぜなら、彼は絶え間ない仕事に絶えず対処するのに慣れているからです。 彼は困難な状況で迅速に決定を下し、利用可能なすべてのリソースを効果的に使用できます。



もちろん、すべての業界でそのような開発者のスキルが最大限に活用されるわけではありません。 基本的なアルゴリズムの優れた知識と効果的なデータ構造を選択する能力により、最高の能力を十分に発揮できる複雑なシステムの開発に引き付けることができます。



これは私たちにも当てはまります-ほとんどすべてのVK VK開発者がコンテストに参加しました。 ACM-ICPCを含む最も権威のあるチャンピオンシップで複数回優勝した優秀なプログラマーによって作成された自己記述データベースを使用します。



画像

ACM-ICPC 2014のチャンピオン-Egor Suvorov、Dmitry Egorov、Pavel Kunyavsky。 トレーナーアンドレイロパチン。 このチームの2人のメンバーがVKontakteに取り組んでいます。



VKカップ



VKontakteは常にこの傾向をサポートしてきました。サンクトペテルブルク州立大学でオリンピアードプログラミングのトレーニングを後援し、Summer Computer Schoolの開催を支援し、Codeforceの作成に貢献しました。 次の論理的なステップは、あなた自身のトーナメントの組織化でした。



VKカップの歴史は2012年に最初の個人競技で始まりました。 現在、カップは2人のチームによるトーナメント形式で開催されています。 参加者の年齢は限られており、14歳以上23歳以下です。



画像

VK本社での最終VKカップ2017



3月から7月にかけて、参加者は予選ラウンドの問題を解決しました。 予選に参加した2736チームのうち、上位20チームのみが決勝に進みました。 チャンピオンシップファイナルは、伝統的にネフスキー大通りのシンガーハウスのVKontakte本社で開催されます。 この記事では、VK Cup 2017の結果について説明しました。



参加したい!



VK Cup 2018でお待ちしています。また、他のオープントーナメントで試してみることをお勧めします。



-Facebookハッカーカップ

-Google Code Jam

-AtCoder

-IPSC

-Topcoder Open

-deadline24

- スナックダウン

- ロシアコードカップ

-Yandex.Algorithm



All Articles