CSES - Harjoittelu

Kisakoodauksessa on vaikea parantua jollei harjoittele. Harjoittelu tapahtuu parhaiten ratkomalla tehtäviä, osallistumalla kisoihin ja opettelemalla uusia tekniikoita.

Codeforces on maailman suosituin kisakoodaussivusto, jolla järjestetään kisoja noin kahdesti viikossa. Kisojen laatu on keskimäärin hyvä, ja niiden yleisyys auttaa harjoittelun pitämisenä konsistenttina. Kilpailut kestävät noin 2h.

Atcoder on Japanilainen kisakoodaussivusto, jolla järjestetään kisoja noin kerran kahdessa viikossa. Tehtävien laatu on keskimäärin jopa Codeforcesia korkeampi. Erityisen paljon esiintyy kombinatorisia tehtäviä, joissa tarvitsee laskea jonkin määrä. Kuten Codeforcesissa, kilpailut kestävät noin 2h.

COCI on Kroatian joukkuevalintaan käyttämä tehtäväsarja, joita on yksi kuussa. COCI on hyvä siitä, että sen tehtävissä esiintyy osatehtäviä. Kannattaa tosissaan koittaa hakea osapisteitä tehtävistä joita ei saa kokonaan ratkottua: jos ei treenaa äääh-koodausta, ei sitten tärkeissä kisoissa osaa äääh-koodausta. Huono puoli on, ettei tehtävistä saa täyttä palautetta: vasta kilpailun jälkeen saa tietää toimiko koodi. Tehtäviä löytyy hyvin eri vaikeustasoilta: erityisesti vaikeita IOI-tyylisiä tehtäviä esiintyy täällä. Kilpailut kestävät 3h.

USACO on Yhdysvaltojen IOI-joukkueen valintaan käyttämä kisasarja, josta ilmestyy noin kuusi kertaa vuodessa kisoja neljältä vaikeustasolta. Kilpailun voi tehdä haluamanansa aikana muutaman päivän ikkunan sisällä. Nämä tehtävät ovat laadukkaita, ja kisan formaatti on juuri kuin IOI:ssä: nämä kisat kannattaa ehdottomasti ottaa aina kun niitä on. Seuraava kilpailu on 27.3.. Tulen lähettämään muistutusviestin muutama päivä ennen näitä kisoja. Kilpailut kestävät 4-5h.

USACOssa on aloitettava alimmalta vaikeustasolta (pronssista), mutta jos saa täydet pisteet, voi saman viikon aikana ottaa myös seuraavan vaikeustason kilpailun, ja niin edelleen. Jos vain mahdollista, näin kannattaa tehdä.

Tämän lisäksi on tulossa sarja viikkokisoja, joissa pääsette kisaamaan muiden leiriläisten kanssa IOI-tyylisissä kilpailuissa. USACOn tyylisesti ne voi ottaa viikon pituisen ikkunan aikana. Ensimmäinen kilpailu tulee jo ensi viikolla, ja sen voi ottaa ma 9.3 - su 16.3 itselleen sopivana päivänä. Näillä kilpailuilla on muita korkeampi painotus tiimin valinnassa.

Datatähti-valmennustehtävät on tällä hetkellä kahdensadan opettavaisen tehtävän setti. Tehtäviä löytyy kaikista usein esiintyvistä aiheista.

Atcoderista löytyy Educational DP contest, jossa esiintyy 26 tunnettua DP-tehtävää. Jos haluaa kunnolla oppia hyödyntämään yhtä yleisimmistä kisakoodaustekniikoista, nämä tehtävät kannattaa ratkoa. Osa vaikeimmista tehtävistä vaatii tekniikoita joita ei ole vielä opetettu, esim tehtävässä Frog 3 täytyy osata Convex Hull Trick.

Melkeimpä tärkein lähde tehtäville ratkoa on kisat joita olet ottanut. Tehtävien, joita et saanut ratkaistua ottamassasi kisassa ratkomista kutsutaan upsolvaamiseksi, ja se on hyvin kannattavaa. Jos kisan jälkeen tehtävää ei saa upsolvattua, kannattaa mieluummin lukea ratkaisu kisan editorialista ja sitten implementoida se kuin unohtaa tehtävä kokonaan. Tämä on myös yksi tapa kohdata uusia tekniikoita.

Harjoittelun konsistentiuden takaamiseksi tavoitteeksi voi esim. ottaa joka päivä osallistua johonkin kisaan, ratkoavalmennustehtävä tai upsolvata tehtävä jota ei ottamassaan kisassa saanut ratkaistua.

Uusia tekniikoita voi opetella lukemalla Kisakoodarin Käsikirjaa, jos ei vielä ole. Kirjassa opetettavat tekniikat esiintyvät yleisesti tehtävissä, ja ne kannattaa ehdottomasti hallita.

Vaikeampia tekniikoita opetetaan valmennusleireillä, mutta ei kannata nojata pelkästään tähän: jos jossain tehtävässä esiintyy tekniikka jota ei vielä osaa, sen voi opetella itse netistä. Moneen aiheeseen löytyy hyvin tutoriaaleja sivulta CP-algorithms ja blogeista Codeforcesista. Myös kisakoodauksen ulkopuolella esiintyvistä algoritmeistä löytyy yleensä hyvin materiaalia yliopistojen avoimilta kursseilta. Kysymällä esim. Datatähti-telegramissa, voin koittaa myös itse neuvoa.