- Wstęp do programowania sportowego
- Podstawy C++
- składnia języka
- wejście/wyjście
- zmienne
- arytmetytka
- instrukcje warunkowe
- pętle
- tablice
- stringi
- Złożoności algorytmów
- Zliczanie
- Sumy prefiksowe
- Algorytm kadane
- Sortowanie
- bąbelkowe
- przez wybieranie
- przez zliczanie
- pozycyjne
- Ciąg fibbonaciego
- Podstawy teorii liczb
- podstawy arytmetyki modulo
- algorytm euklidesa
- sito erastotenesa
- faktoryzacja liczb
- znajdowanie dzielników i testy pierwszości
- Znajdowanie lidera w ciągu
- Szereg harmoniczny w zadaniach
- Algorytm gąsienicy
- Wyszukiwanie binarne
- System liczbowe i operacje bitowe
- Szybkie potęgowanie
- Wyszukiwanie binarne po wyniku
- Funkcje i rekurencja
- Wskaźniki oraz referencja
- Drzewa
- definicja i pojęcia
- kopiec oraz kolejka priorytetowa
- BST - drzewo poszukiwań binarnych
- Dziel i zwyciężaj
- mergesort
- quicksort
- obliczanie złożoności
- Znajdowanie k-tego elementu w ciągu
- quickselect
- Sturktury danych w STL
- vector
- stos, lista, kolejka
- set, mapa
- Programowanie zachłanne
- problem wyboru zajęć
- podstawy strategii zachłannej
- dowodzenie rozwiązań zachłannych
- Sortowanie z komparatorem
- Technika skalowania
- Wstęp do programowania dynamicznego
- rekurencyjne i iteracyjne podejście
- rozwiązywanie zadań z dynamikami
- Równoległe wyszukiwanie binarne
- Ternary search
- Wstęp do teorii grafów
- definicje, pojęcia
- reprezentacja grafów w pamięci
- dfs i bfs
- spójne składowe
- cykl i ścieżka eulera
- znajdowanie cykli w grafie
- Drzewo fenwicka
- Drzewa przedziałowe
- punkt-przedział
- przedział-punkt
- przedział-przedział
- zastosowania
- Brute force
- Dynamiki
- problem plecakowy
- najdłuższy wspólny podciąg
- odtwarzanie optymalnego rozwiązania
- DAG i sortowanie topologiczne
- Silne spójne składowe
- algorytm kosajru
- algorytm tarjana
- Technika small-to-large merging
- Sumy prefiksowe 2D
- Analiza kosztu zamortyzowanego
- metoda kosztu sumarycznego
- metoda księgowania
- metoda potencjału
- Find and union
- Przyśpieszanie dynamików
- zmiana dp rekurencyjnego na iteracyjny
- eliminacja stanów
- przyśpieszanie strukturkami
- wykorzystywanie własności dp-ka
- Aktualizowanie poddrzew
- Dynamiki na drzewach oraz technika przekorzeniania
- Minimalne drzewo rozpinające
- algorytm prima
- algorytm kruskala
- algorytm borůvki
- Algorytmy najkrótszej ścieżki
- algorytm dijkstry
- algorytm bellmana-forda oraz spfa
- algorytm floyda-warshalla
- algorytm johnsona
- algorytm a*
- Sparse table
- Technika euler toura
- LCA
- przy użyciu jump pointerów
- przy użyciu euler toura
- offline algorytm tarjana
- Pierwiastki
- dekompozycja na pierwiastki
- aktualizacja co pierwiastek
- technika light and heavy
- algorytm mo
- Kolejka monotoniczna oraz monotoniczny stos
- Dynamiki na cyfrach
- Dynamiki przedziałowe
- Izomorfizm drzew
- Dynamiki wykładnicze
- maski bitowe
- sum over subsets
- problem komiwojażera
- Geometria obliczeniowa
- podstawy geometrii
- wielokąty
- zamiatanie
- sortowanie kątowe
- otoczka wypukła
- para najbliższych punktów
- para najdalszych punktów
- Haszowanie
- haszowanie różnych obiektów
- hashmapy
- inne zastosowania
- Statystyki pozycyjne
- Algorytmy tekstowe
- algorytm booyer'a moora
- algorytm rabina-karpa
- lematy i algorytm kmp
- drzewo trie
- porównywanie tekstów z aktualizacjami
- algorytm manachera
- algorytm kmr
- algorytm z
- Teoria gier
- strategie w grach i w rozwiązywaniu zadań
- twierdzenie sprague-grundy'ego
- Meduzy
- Teoria liczb
- twierdzenia i funkcje
- funkcja eulera, sigma
- hipoteza goldbacha
- arytmetyka modulo
- sito liniowe
- testy pierwszości
- rozszerzony algorytm euklidesa
- bignumy
- twierdzenia i funkcje
- Struktury danych 2D
- Funkcja low
- Meet in the middle
- Rozbicie przez centroid
- Potęgowanie macierzy
- Dekompozycja heavy-light
- 2-SAT
- Algorytmy randomizowane
- Problemy NP
- przykładowe problemy NP
- rozwiązywanie zadań powiązanych z problemami NP
- Algorytmy przepływowe
- wstęp do przepływów
- problem maksymalnego przepływu i algorytm forda-Fulkersona
- algorytm edmondsa-karpa
- algorytm dinica
- algorytm hopcrofta-karpa
- skalowanie
- maksymalny przepływ minimalnym kosztem
- Skojarzenia w grafach
- Grafy planarne
- Trwałe struktury danych
- Usuwanie offline
- Zaawansowany DP
- slope trick
- convex hull trick
- optymalizacja z dziel i zwyciężaj
- optymalizacja knutha
- Zaawansowana teoria liczb
- algorytm rho pollarda
- trik z pierwiastkiem sześciennym
- chińskie twierdzenie o resztach
- binarne gcd
- generatory i logarytm dyskretny w arytmetyce modulo
- Zaawansowane algorytmy tekstowe
- tablica sufiksowa
- suffix automata
- drzewo sufiksowe
- drzewo palindromiczne
- aho corasick
- Wielomiany i FFT