Menu

Dwie struktury PEB w procesie

Cpp WinApi

Analiza nieudokumentowanych anomalii w zachowaniu funkcji NtQueryInformationProcess w systemie Windows. Dowiedz się, jak dwie różne struktury PEB mogą być dostępne w procesie i jak to wpływa na wyniki odczytu informacji o procesie.

CreateToolhelp32Snapshot

Cpp WinApi

Analiza nieudokumentowanych anomalii w funkcji CreateToolhelp32Snapshot. Dowiedz się, dlaczego architektura (x86 vs x64) aplikacji diagnostycznej wpływa na wyniki odczytu sterty (heap) w systemie Windows i jak różnice między dokumentacją a rzeczywistym działaniem WinApi mogą zmylić programistę narzędzi systemowych.

Programowanie dynamiczne #2

Algorytmy Cpp Python Zadanie

Wprowadzam pojęcie programowania dynamicznego i pokazuję, jak zastosować go do rozwiązania problemu Longest Common Subsequence. Przedstawiam koncepcję rozdzielania problemu na mniejsze części i wykorzystywania wyników tych części do uzyskania rozwiązania głównego. Na przykładzie ilustruję, jak wykorzystać wiedzę o najdłuższych wspólnych podciągach do obliczenia najdłuższego wspólnego podciągu dla dwoch ciągów znaków.

Programowanie dynamiczne #1

Algorytmy Cpp Python Zadanie

Wprowadzam pojęcie programowania dynamicznego i pokazuję, jak zastosować go do rozwiązania problemu Longest Increasing Sequence. Przedstawiam koncepcję rozdzielania problemu na mniejsze części i wykorzystywania wyników tych części do uzyskania rozwiązania głównego. Na przykładzie ilustruję, jak wykorzystać wiedzę o najdłuższych podciągach do obliczenia najdłuższego podciągu po dodaniu nowego elementu do ciągu.

Zadanie rekrutacyjne #4

Cpp Rekrutacja

Analizuję różne sposoby znalezienia najmniejszej liczby uint32_t, która nie występuje w zadanym zbiorze: od sortowania, przez zliczanie i struktury std::set/std::unordered_set, aż po podejścia oparte na podziale zakresu. Porównuję użycie pamięci, złożoność czasową i praktyczne ograniczenia przy bardzo dużych zbiorach.

Zadanie rekrutacyjne #2

Cpp Rekrutacja Zadanie

Na klasycznym zadaniu z cyklem w liście jednokierunkowej porównuję kilka podejść: z dodatkowymi strukturami danych, z modyfikacją listy oraz algorytm „żółwia i zająca” Floyd’a. Omawiam złożoność, zużycie pamięci i praktyczne zalety każdego rozwiązania.