ЦП Хандбоок је једно место за све љубитеље конкурентног програмирања, јер садржи све алгоритме и структуре података. Такође свака тема садржи примере и нерешене проблеме за праксу.
Такмичко програмирање је спорт, мислим буквално. Бавите се било којим спортом, размислимо о крикету по том питању, први пут улазите да пливате. Замах и промашај, урадите то неколико пута и на крају ћете једног погодити преко ужади. Сада, размотрите такмичење у програмирању као игру крикета, метафорички. Саставите код и поднесите га, можда ћете добити ВА (Погрешан одговор).
Промените код и на крају ћете добити свој први АЦ (Прихваћен / Тачан одговор). Дозволите ми да мало сазнам, око 20% питања у програмском такмичењу је једноставна конверзија обичног енглеског у код вашег омиљеног програмског језика.
Уђите право у њу, научићете неписана правила игре како играте све јаче и постајете бољи.
И верујте ми, не бисте требали да знате ниједан алгоритам „премишљено име“ или структуру података да бисте започели. Јесте ли икада чули за "Вафт схот", а ипак сте најбољи бацач у својој улици, зар не?
У реду, освајамо првих 20% проблема са програмирањем.
Треба да знаш:
Међусобно задржавање на било којем програмском језику
Енглески језик! Претвори енглески језик у код!
Узмимо за пример пример овог нивоа: Грозни Цханду
Све што требате учинити је прочитати улазну линију са СТДИН-а и исписати наличје СТДОУТ. Само напред, поднесите пријаву. Потражите свој први АЦ. Желим више? Имамо оптерећења у одељку за вежбање. Потражите оне са хиљадама тачних поднесака.
Ок, сада сте спремни да прихватите прави изазов. Чврсто, ронимо се дубље.
Треба да знаш:
1. Сортирајте и претражите алгоритме
2. Хасхинг
3. Теорија бројева
4. Похлепна техника
Још важније је да морате схватити шта, када и где да их примените. Постаје заиста тешко и стога почетницима да стекне осећај самопоуздања покрећемо низ такмичења као Цоде Монк. Пре сваког конкурса објављујемо уџбеник о одређеној теми, а касније на конкурсу проблеми су усмерени само на ту одређену тему. Препоручујем вам да прођете кроз уџбенике и да решите питање или два о свакој теми.
До сад сте схватили да су питања уоквирена како би заварали начин на који размишљамо. Понекад, ако претворите обични енглески језик у код, завршили бисте са пресудом ТЛЕ (Прекорачен рок). Морате научити скуп нових техника и алгоритама да бисте се носили са временским ограничењима. У одређеним случајевима на помоћи им долази динамичко програмирање (ДП). Инфект, можда сте већ интуитивно користили ову технику. Увек постоји бар једно питање на било ком такмичењу које ДП може решити.
Такође сте приметили да постоје питања која једноставно не могу да реше структуре података линеарних низова.
1. Теорија графикона
2. Дисјоинт Сет Унион (Унија пронађите)
3. Минимално дрво спаннинга
Овај скуп података ће вас довести довољно далеко. Штавише, схватили бисте да је права уметност модификовати технике које знате да бисте решили питање. Сва питања о лаком и средњем и средњем нивоу могу се решити на овај начин.
Сви сте спремни да надмашите плоче са кратким изазовима програмирања, само наставите упорно. Као што сам већ напоменуо, то је спорт, нећете га савладати док то заправо не учините. Само напред, учествујте у кратком такмичењу, упознајте своје снаге, слабости и погледајте како се бавите адреналинским режимом када сат куца.
Држите се своје логике што је дуже могуће, на крају ћете смислити нешто слично алгоритму који је потребан да бисте решили питање. Само га требате средити. Неколико ових техника помоћи ће вам да решите неке од најтежих проблема око себе.
1. Стабло сегмента
2. Алгоритми жице
3. Триес, Суффик Дрво, Суффик Низ.
4. Распадање тешке светлости
5. Бојање графикона, проток мреже
6. Скрт декомпозиција.
Зато преузмите овај приручник са ЦП-ом и уживајте у учењу нових ствари. Такође их не заборавите КОДИРАТИ уз мање временске сложености.