Halo semuanya! Nama saya Lida, dan saya telah menjalankan kompetisi pemrograman selama 12 tahun. (Halo, Lida!) Tahun ini saya bergabung dengan Tim VKontakte dan sekarang mengawasi Piala VK. Selama 5 musim itu hanya kejuaraan pemrograman olahraga. Tetapi saatnya telah tiba untuk perubahan besar.
Kami menghapus sebagian besar batasan, membatalkan format pasangan, dan menambahkan tiga arah baru. VK Cup 2019 adalah kompetisi online untuk programmer Olimpiade, pengembang ponsel, desainer, dan spesialis pembelajaran mesin dengan final offline besar di St. Petersburg.
Dalam artikel ini saya akan memberi tahu Anda bahwa kami membuat yang baru, dan kolega saya akan memberikan rekomendasi untuk para peserta. Pendaftaran untuk VK Cup terbuka di vk.cc/cup hingga 4 Desember - hanya tinggal seminggu! Semua detail tentang trek dan panggung berada di bawah potongan.

VKontakte untuk Olimpiade
Banyak perusahaan IT mengadakan kompetisi mereka - ini adalah cara untuk berbicara tentang tugas menarik yang mereka hadapi. Tim VKontakte adalah salah satu yang pertama di tahun 2012 yang menyelenggarakan turnamen sendiri. Para pengembang sendiri yang memprakarsai mereka - para pemenang kompetisi pemrograman internasional selalu bekerja di VK. Empat juara dunia di Tim sekarang.
Mesin yang dibuat pengembang adalah dasar dari VKontakte. Di sanalah efisiensi sangat penting, dalam hitungan - setiap milidetik. Bagaimana cara mencapai kinerja maksimum? Ketahui secara mendalam algoritma dan struktur data, dan juga cocok dengan batas memori yang diberikan. Ini adalah persyaratan yang begitu tinggi yang dikenakan pada kode peserta Piala VK.
Sejak 2012, formatnya telah sedikit berubah, tetapi esensinya tetap sama: peserta berusia 14 hingga 23 tahun berkompetisi dalam program Olimpiade, sendirian atau dalam tim yang terdiri dari dua orang. Jika Anda dua kali mencapai final, maka Anda tidak dapat berpartisipasi lagi. Saatnya untuk berubah.
Turun dengan batasan
VK Cup 2019 akan diadakan dalam format solo. Kami menghapus palang atas berdasarkan usia dan batasan jumlah final - jadi tahun ini peserta terbaik tahun lalu dan spesialis berpengalaman akan dapat kembali ke kejuaraan. Tetapi yang paling penting - selain pemrograman olahraga, dimungkinkan untuk bersaing dalam pembelajaran mesin, pengembangan dan desain ponsel. Anda dapat berpartisipasi dalam beberapa lagu secara bersamaan - jika, tentu saja, ada cukup waktu.
Setiap lagu akan terdiri dari tiga putaran:
- Kualifikasi akan diadakan online mulai 6 hingga 16 Desember dan akan terbuka untuk semua. Babak berikutnya akan menjadi 256 peserta terbaik di setiap trek.
- Kami juga akan melakukan tahap kualifikasi online - pada bulan Februari 2020. Di sini, peserta akan menemukan tugas yang lebih kompleks dan waktu yang lebih singkat. 40 penulis dari keputusan paling sukses di setiap lagu akan pergi ke final.
- Final akan diadakan di St. Petersburg pada bulan April 2020. Dalam konfrontasi penuh-waktu, para peserta akan bersaing untuk mendapatkan hadiah utama dari setiap lagu - 524.288 rubel (2 ^ 19).
Lacak Engine
Kualifikasi Peserta akan memecahkan masalah pada platform Codeforces dalam bahasa pemrograman yang nyaman. Anda bahkan dapat menyelesaikan masalah dengan tangan Anda, membongkar setiap tes individu.
Tahap kualifikasi. Penting untuk menyelesaikan setiap masalah sesegera mungkin untuk mencetak lebih banyak poin dan mendapatkan undangan ke final.
Final. Peserta akan bersaing sesuai dengan aturan Codeforces standar: mereka akan bisa mendapatkan poin tambahan jika mereka menemukan kesalahan dalam keputusan peserta lain.
Kiat dari Boris Minaev
Borya adalah juara dunia pemrograman ICPC 2015, posisi ke-2 di Piala VK 2015, kepala tim basis data VKontakte.
- Memecahkan masalah dalam rangka meningkatkan kompleksitas. Pilih salah satu yang lulus peserta terbanyak.
- Jangan melakukan siklus dalam tugas jika itu tidak menyerah pada Anda. Segera tentukan batas pada diri Anda: "Jika saya tidak maju dalam solusi dalam 15 menit, maka saya akan pindah ke yang berikutnya."
- Uji solusi sebelum mengirim. Pastikan untuk menjalankannya pada kasus batas. Sebelum itu, baca kembali bagian dengan pembatasan pada input data.
- Terkadang ide solusi dapat ditemukan berdasarkan batasan dalam kondisi tersebut. Misalnya, Anda memiliki tugas di mana n objek diberikan. Jika n <10, maka mungkin dalam solusi itu perlu untuk mengulangi semua permutasi objek. Jika n <20, maka tulis pencarian rekursif dalam 2 ^ n. Jika n <1000, maka buatlah pemrograman dinamis untuk n ^ 2. Dan jika n adalah sekitar satu juta - kemungkinan besar, Anda perlu berpikir ke arah solusi linier.
- Jika Anda menerima WA, baca kembali kode beberapa kali, dan masih tidak melihat kesalahan, maka cobalah menulis solusi yang lebih sederhana. Kemudian bandingkan pada tes kecil apakah solusi asli dan baru selalu memberikan jawaban yang sama. Jika Anda memecahkan masalah pada pohon yang tidak berbobot, jalankan saja solusinya, tetapi pilih root yang berbeda.
- Gunakan lingkungan pengembangan seperti CLion atau IDEA. Mereka dapat menemukan kesalahan standar seperti variabel yang tidak diinisialisasi atau potongan kode yang tidak dapat dijangkau.
- Tambahkan lebih banyak pernyataan ke kode Anda. Menemukan alasan RE jauh lebih mudah daripada WA.
Lacak Ponsel
Kualifikasi Kami akan menguji pengetahuan tentang algoritma sederhana yang sering diperlukan untuk mengimplementasikan layar standar aplikasi seluler, serta pengetahuan teoritis platform seluler kami. Babak berikutnya akan menjadi 128 peserta dari setiap platform.
Tahap kualifikasi. Penting untuk memprioritaskan dengan benar. Mana yang lebih baik - berada dalam waktu sebanyak mungkin atau mengerjakan setiap tugas dengan hati-hati? Final akan mencakup 20 pengembang teratas.
Final. Setiap peserta harus menunjukkan keterampilan produk mereka: datang, laksanakan, dan kirimkan proyek baru hanya dengan menggunakan layar yang dikembangkan pada babak sebelumnya.
Kiat dari Oleg Smirnov
Oleg memimpin Tim Android VKontakte dan menyusun tugas untuk jalur pengembangan ponsel VK Cup.
- Pastikan sebelum dimulainya kompetisi bahwa Anda memiliki IDE (Android Studio) yang dikonfigurasi, plugin yang diperlukan terhubung, emulator berfungsi dan ada perangkat nyata untuk pengembangan.
- Memahami sistem pembangunan Gradle dan pengaturannya.
- Baca syarat dan ketentuan dan temukan tentang SDK minimum yang perlu Anda dukung. Jangan menulis kode universal untuk semua platform, pecahkan masalah berdasarkan kondisi yang ditetapkan.
- Jika tidak ada kebutuhan mendesak, jangan gunakan NDK dalam proyek. Hampir semua tugas dapat diselesaikan menggunakan SDK.
- Perhatikan hak aplikasi. Verifikasi bahwa semua permintaan izin dibuat.
- Melacak kinerja aplikasi: sistem file, jaringan, animasi UI yang lancar.
- Tentukan set perpustakaan minimum untuk dikerjakan. Gunakan waktu untuk menyelesaikan tugas, bukan untuk mempelajari perpustakaan.
- Akan berguna untuk melihat karya VK SDK.
Desain Track
Kualifikasi Kami akan memastikan bahwa peserta tidak hanya dapat mengembangkan elemen desain individual, tetapi juga melihat kesalahan.
Tahap kualifikasi. Kami menawarkan untuk mengembangkan antarmuka elemen individu VKontakte atau layanan independen. Penting untuk menemukan kompromi antara skala ide dan waktu pengembangan.
Final. Peserta perlu membicarakan ide mereka dan mempresentasikan desain.
Kiat dari Alexei Mazelyuk
Lesha adalah desainer VK senior dan pemenang kontes Desainer VK pada tahun 2015 dan 2017.
- Hancurkan tugas menjadi lebih kecil. Cobalah untuk mengalokasikan waktu dan memprioritaskan agar tepat waktu. Jika Anda berhasil melakukan sesuatu lebih cepat dari yang direncanakan, akan ada waktu untuk fitur dan peningkatan.
- Tentukan audiens dan konteksnya.
- Pikirkan terlebih dahulu tentang alat yang ingin Anda gunakan.
- Catat ide. Pilih yang terbaik dan terus bekerja dengan mereka. Tidak cukup waktu untuk semuanya.
- Kertas dan pensil kadang-kadang berfungsi lebih baik daripada editor grafis.
- Selesaikan masalahnya, jangan menggambar gambar yang indah. Tren tidak boleh diabaikan, tetapi semuanya harus sesuai.
- Gunakan dengan bijak prestasi rekan kerja. Terkadang lebih baik mengambil sesuatu yang siap, daripada menemukan kembali roda. Tetapi ingat bahwa solusi nyaman baru diberi peringkat lebih tinggi dari salinan berikutnya.
- Libatkan secara detail jika Anda punya waktu untuk ini.
- Presentasi itu penting! Perlu menjual keputusan kepada juri. Gunakan presentasi yang sederhana dan jelas.
- Jangan membungkuk dengan jumlah teks dalam presentasi, gunakan video.
Lacak ML
Kualifikasi Sebagai jawaban, Anda harus mengunduh data yang diproses, dan setiap keputusan akan dievaluasi menggunakan metrik yang telah ditentukan. Data dari tugas dapat diproses secara offline atau bahkan secara manual.
Tahap kualifikasi. Kode untuk pendekatan yang akan dikembangkan peserta akan diunggah ke sistem pengujian - semua solusi akan diuji pada infrastruktur yang sama, dalam kondisi sumber daya komputasi yang terbatas.
Final. Peserta akan menyelesaikan tugas praktis yang sulit.
Kiat dari Danila Savenkova
Danya memasuki kontestan Mercedes teratas di kaggle. Dia juga seorang programmer senior VK.
- Untuk validasi lokal, cobalah untuk mereproduksi prinsip partisi yang sama yang digunakan ketika penyelenggara tes memilih set tes (perhatikan waktu, jika ada, dan ID). Jika memungkinkan, gunakan validasi silang. Metode ini praktis di luar kotak mampu mengevaluasi signifikansi perubahan metrik . Pastikan untuk memperbaiki seed ketika melanggar dataset.
- Melatih dan rata-rata model yang berbeda. Ini mungkin bekerja lebih baik dari satu model - ingat teorema batas pusat. XGBoost dengan sids yang berbeda juga merupakan model yang berbeda (yang paling penting adalah ingat untuk membuat subsampel <1 dan / atau colsample <1). XGBoost, CatBoost, dan LightGBM juga merupakan model yang berbeda dalam konteks ini.
- Gunakan sklearn.Pipeline. Ketika model.fit mencakup seluruh pipa mulai dari preprocessing data hingga mendapatkan prediksi, menjadi lebih mudah untuk dijalani dan kecil kemungkinannya untuk melakukan kesalahan dengan validasi lokal.
- Jika Anda ingin postekat - perhatikan cross_val_predict, fungsi ini akan sangat membantu.
- Lakukan fitur. Susun, blending, pengaturan hyperparameters - hampir semua orang bisa melakukan ini. Pemenangnya adalah mereka yang datang dengan fitur paling sukses. Nah, atau mereka yang menemukan wajah. Atau mereka yang beruntung. Dan lebih sering kombinasi dari faktor-faktor ini berfungsi;)
Jika Anda masih memiliki pertanyaan tentang VK Cup, tulis pesan pribadi VK VK: vk.com/cup . Di sana Anda dapat menemukan aturan dan memantau perkembangan kejuaraan.
Saya harap Anda menikmati Piala VK baru dan kami akan bertemu dengan beberapa pembaca di final di St. Petersburg. Semoga beruntung untuk semuanya!