CP Handbook, bütün alqoritmləri və məlumat quruluşlarını ehtiva etdiyi üçün rəqabətə davamlı proqramlaşdırma həvəskarları üçün bir yerdir. Həm də hər mövzuda təcrübə üçün nümunələr və həll olunmayan problemlər var.
Rəqabətli proqramlaşdırma bir idmandır, mən sözün əsl mənasında. Hər hansı bir idman növü ilə məşğul ol, bu mövzuda kriket düşünək, ilk dəfə çimmək üçün gəzirsən. Yelləncək və qaçırın, bunu iki dəfə edin və nəticədə iplərin birini vuracaqsınız. İndi bir proqramlaşdırma yarışmasına metaforik olaraq kriket oyunu kimi baxın. Kod tərtib edin və təqdim edin, bir WA (səhv cavab) ala bilərsiniz.
Kodda dəyişiklik edin və nəticədə ilk AC-ni alacaqsınız (Qəbul olunmuş / Düzgün cavab). İcazə verin, bir proqramlaşdırma yarışmasında sualların təxminən 20% -i sadə ingilis dilini ən sevdiyiniz proqramlaşdırma dilinin koduna çevirin.
Düzgün içəri daxil olun, daha çox oynadığınız və yaxşılaşdığınız zaman oyunun yazılmamış qaydalarını öyrənəcəksiniz.
İnanın, işə başlamaq üçün hər hansı bir "xülya adı" alqoritmini və ya məlumat quruluşunu bilməyinizə ehtiyac yoxdur. "Waft shot" haqqında heç eşitməmisiniz, amma küçənizdəki ən yaxşı batsmansınız?
Yaxşı, gəlin proqramlaşdırma problemlərinin ilk 20% -ni fəth edək.
Bilməlisiniz:
Hər hansı bir proqramlaşdırma dilində ara tutma
İngilis! İngilis dilini koda çevirin!
Bu səviyyədəki bir məsələni misal gətirək: Dəhşətli Chandu
Sadəcə, STDIN-dən giriş xəttini oxuyun və bu xəttin tərsini STDOUT-a yazdırın. Gedin, təqdim edin. İlk AC axtarın. Çox istəyirəm? Təcrübə bölümümüzdə yüklərimiz var. Minlərlə düzgün təqdimat olanları axtarın.
Tamam, indi həqiqi bir iş görməyə hazırsınız. Tutun, daha dərinə dalırıq.
Bilməlisiniz:
1. Sort və Axtarış alqoritmləri
2. həşərat
3. Say nəzəriyyəsi
4. Xəsislik texnikası
Daha əhəmiyyətlisi, nələri, nə vaxt və harada tətbiq edəcəyinizi anlamalısınız. Həqiqətən çətin olur və bu səbəbdən başlayanlara Code Monk kimi bir sıra yarışmalar keçirməyə inam hissi qazandırmaq üçün kömək edir. Hər bir yarışmadan əvvəl müəyyən bir mövzuya dair bir dərs vəsaiti buraxırıq və daha sonra yarışmada problemlər yalnız müəyyən bir mövzuya yönəldilir. Dərsliklərdən keçməyi və hər mövzuya bir-iki sual verməyinizi məsləhət görərdim.
Sualların düşüncə tərzimizi aldatmaq üçün çərçivəyə salındığını artıq başa düşdünüz. Bəzən, sadə ingilis dilini koda çevirsəniz, TLE (vaxt limiti aşdı) hökmü ilə başa çatacaqsınız. Vaxt məhdudiyyətlərinin öhdəsindən gəlmək üçün bir sıra yeni texnika və alqoritmlər öyrənməlisiniz. Müəyyən hallarda, Dinamik Proqramlaşdırma (DP) qurtarmağa gəlir. Təsir etsəniz, bu texnikanı onsuz da istifadə edə bilərsiniz. Hər hansı bir yarışmada həmişə DP-nin həll edə biləcəyi ən azı bir sual var.
Ayrıca, xətti sıralı məlumat quruluşları ilə həll edilə bilməyən sualların olduğunu da görmüsünüz.
1. Qrafika nəzəriyyəsi
2. Birlikdən imtina et (Birlik tap)
3. Minimum yayılma ağacı
Bu məlumat quruluşları dəsti sizi kifayət qədər əldə edəcəkdir. Üstəlik, əsl sənətin bir məsələni həll etmək üçün bildiyiniz üsulları dəyişdirmək olduğunu başa düşməzdiniz. Bütün Asan Orta və Orta səviyyəli suallar bu şəkildə həll edilə bilər.
Hamınız Qısa Proqramlaşdırma Çağırışlarının liderlik lövhələrini üstün tutursunuz, yalnız əzmkarlıq göstərin. Qeyd etdiyim kimi, bu bir idmandır, bunu etməyincə onu mənimsəyə bilməzsən. Gedin, qısa bir yarışmada iştirak edin, güclü, zəif tərəflərinizi bilin və saat tıqqıldadıqda adrenalin rejiminə necə baxdığınıza baxın.
Mümkün qədər uzun müddətə öz məntiqinizə sadiq qalın, nəticədə sualın həlli üçün tələb olunan alqoritmə bənzər bir şey ortaya çıxacaqsınız. Yalnız fırçalamaq lazımdır. Bu üsullardan bir neçəsi ətrafdakı bəzi çətin problemləri həll etməyə kömək edəcəkdir.
1. Seqment ağacı
2. Sətir alqoritmləri
3. Çalışır, Suffix Ağacı, Suffix Array.
4. Ağır İşıq parçalanması
5. Qrafik Boyama, Şəbəkə axını
6. Sqrt ayrılması.
Beləliklə, bu CP kitabçasını yükləyin və yeni şeylər öyrənməkdən zövq alın, daha az vaxt mürəkkəbliyi ilə onlara kod verməyi unutmayın.
Güncəlləmə vaxtı
21 mar 2021