Struktury danych:
segment_tree.cpp- Drzewo przedziałowesegment_tree_lazy.cpp- Drzewo przedziałowe z lazy propagationfenwick_tree.cpp- Fenwick Tree (Binary Indexed Tree)union_find.cpp- Union-Find (DSU)sparse_table.cpp- Sparse Table (RMQ)trie.cpp- Trie (drzewo prefiksowe)
Algorytmy grafowe:
bfs.cpp- Breadth-First Searchdfs.cpp- Depth-First Searchtopological_sort.cpp- Sortowanie topologicznedijkstra.cpp- Algorytm Dijkstrybellman_ford.cpp- Algorytm Bellman-Fordafloyd_warshall.cpp- Algorytm Floyd-Warshallakruskal.cpp- Algorytm Kruskala (MST)prim.cpp- Algorytm Prima (MST)lca.cpp- Lowest Common Ancestor (Binary Lifting)scc.cpp- Strongly Connected Components (Kosaraju)articulation_points.cpp- Punkty artykulacji i mostybipartite_matching.cpp- Skojarzenia w grafie dwudzielnym
Algorytmy na stringach:
kmp.cpp- Knuth-Morris-Prattz_algorithm.cpp- Z-Algorithmrabin_karp.cpp- Rabin-Karpmanacher.cpp- Manacher's Algorithm
Algorytmy matematyczne:
gcd_lcm.cpp- NWD, NWW, rozszerzony algorytm Euklidesasieve.cpp- Sito Eratostenesafactorization.cpp- Faktoryzacjamodular_exponentiation.cpp- Potęgowanie modularnebinomial_coefficient.cpp- Symbol Newtona
Geometria:
convex_hull.cpp- Otoczka wypukłageometry_basics.cpp- Podstawowe funkcje geometryczne
Programowanie dynamiczne:
lis.cpp- Longest Increasing Subsequencelcs.cpp- Longest Common Subsequenceedit_distance.cpp- Edit Distance (Levenshtein)knapsack.cpp- Problem plecakowy (0/1 i unbounded)
Algorytmy wyszukiwania:
binary_search.cpp- Wyszukiwanie binarneternary_search.cpp- Wyszukiwanie trójkowe
Inne techniki:
two_pointers.cpp- Technika dwóch wskaźnikówmos_algorithm.cpp- Mo's Algorithmprefix_sums.cpp- Sumy prefiksowe
- Wszystkie implementacje używają funkcji i globalnych zmiennych (bez klas)
- Każdy plik zawiera komentarz wyjaśniający działanie algorytmu
- Przykłady użycia znajdują się w funkcji
main()każdego pliku - Wszystkie pliki używają
#include <bits/stdc++.h>iusing namespace std;
Pełna lista wszystkich algorytmów z szczegółowymi opisami, zastosowaniami i przewodnikiem wyboru znajduje się w pliku lista_algorytmow.md.
- Tylko zapytania: Sparse Table
- Suma + aktualizacje: Fenwick Tree lub Segment Tree
- Min/Max + aktualizacje: Segment Tree
- Aktualizacje przedziałów: Segment Tree z lazy propagation
- Graf nieważony: BFS
- Graf ważony (nieujemne wagi): Dijkstra
- Graf ważony (ujemne wagi): Bellman-Ford
- Wszystkie pary (mały graf): Floyd-Warshall
- Ogólne: KMP lub Z-Algorithm
- Palindromy: Manacher
Więcej szczegółów w lista_algorytmow.md.