Informatyka. Konkursy i algorytmy
tryb:

Jak zacząć?

Nic nie umiesz, albo jeszcze za mało, a nie wiesz jak się uczyć do OI i OIJ? Poniżej przedstawiam wskazówki na uczenie się właśnie do OI i OIJ.

Pierwszym krokiem powinno być nauczenie się programowania w c++. Wprawdzie w pythonie też można OIJ bądź OI pisać, ale c++ na takih konkursach bardziej opłacalny. Skąd się uczyć? Warto spróbować kurs main2 oraz OKI. Na kursie main2 można się nauczyć absolutnych podstaw języka, a na OKI są również inne przydatne na olimpiadach funkcje w c++.

Drugim krokiem jest już nauka algorytmów i rozwiązywanie zadań, od najprostszych do najtrudniejszych. Do uczenia algorytmów polecam znowu OKI (tyle że wyższy poziom zajęć). Możecie też zajrzeć do zakładki "algorytmy" na tej stronie. Jeśli chodzi o zadania, to warto brać je z minionych już olimpiad, żeby wiedzieć czego się mniej więcej spodziewać. Na OKI po każdych zajęciach jest "praca domowa", na którą się składają różne zadania. Także na mojej stronie pod każdym algorytmem znajdziecie kilka zadań na dany algorytm.

Kolejnym krokiem może być branie udziału w contestach np. codeforces albo wystartowanie już w olipiadzie.... W OIJ można już wystartować podczas drugiego kroku, ponieważ zadania na pierwszym etapie nie wymagają zaawansowanych algorytmów. W OI będzie ciężej, ale przy solidnej, regularnej pracy się powinno udać. Jeśli chodzi o contesty, to warto brać w nich udział, ponieważ rozwijają umiejętność myślenia nad zadaniami w ograniczonej liczbie czasu. Jest to ważne, ponieważ na wyższych etapach OI/OIJ mamy tylko kilka godzin na zrobienie zadań...

Bardzo ważne jest podczas nauki, żeby uczyć się systematycznie i nie przesadzać z ilością. Ważne jest też, żeby nie brać samych łatwiutkich zadań, na które od razu mamy pomysł. Warto porobić takie zadania, gdzie musimy czasem nawet kilka godzin myśleć, zanim wymyślimy rozwiązanie. Jeśli chodzi o ilość - to optymalną ilością właśnie takich zadań gdzie musimy sporo pomyśleć, to jest ok. 4 tygodniowo. Po jakimś czasie naprawdę widać duże efekty 🙂 Oczywiście czasem można odpocząć, tylko to "czasem" nie może być za często. Ale jeśli np. mamy w danym tygodniu drugi etap np. OIJ, to chyba oczywiste że można potem trochę odpocząć 😉. Nie można też się zniechęcać, jeśli jakieś zadanie nam nie wychodzi. Zadanie może być jeszcze po prostu za trudne... Czasem może warto zostawić jakieś bardzo trudne zadanie i się zabrać do niego za jakiś czas? Wtedy może się już uda w końcu przez ten czas się czegoś jeszcze nauczymy...

Co jak już umiemy wystarczająco algorytmów i startujemy w olimpiadzie? Zadanka zadanka zadanka... Trzeba systematycznie rozwiązywać zadania, żeby mieć większą wprawę. Wtedy na konkursie szybciej wymyślimy rozwiązanie. Poza zadaniami warto przećwiczyć pisanie generatorów testów dla danego zadania (czyli takiego programu, który nam losuje przykładowe dane wejściowe), sprawdzaczek (programu, który nam sprawdzi poprawność rozwiązania) i brutów (wolnych programów, które na pewno działają). Przydaje się to na konkursach, jeśli mamy trochę czasu i chcemy przetestować nasze rozwiązanie. Ale czemu bruty? W wielu zadaniach sprawdzaczka będzie porównywać wynik z bruta i naszego szybkiego rozwiązania (czyli wzorcówki). Tylko trzeba wtedy uważać, żeby nie dać za dużych danych, bo brut się nie wyrobi...

Mam nadzieję, że już wiesz jak się uczyć. Powodzenia!

Projekt realizowany na potrzeby stypendium mazowieckiego. © made by Zofia Mroziuk