2. Klasówka 2019/20 (09.01.2020)#
Zadanie 1 [7 punktów]#
Zaprojektuj strukturę danych, która umożliwia wydajne wykonywanie następujących operacji na dynamicznym ciągu liczbowym C:
init::
utwórz pusty ciąg C (operacja wykonywana tylko raz na samym początku);insert(i, x)::
wstaw element x jako i-ty element ciągu C (za elementem z dotychczasowej pozycji i-1 a przed dotychczasowym elementem z pozycji i), \(1 \le i \le |C|+1\);delete(i)::
usuń element z pozycji i z ciągu C, \(1 \le i \le |C|\);Element(i)::
podaj wartość elementu z pozycji i w ciągu C, \(1 \le i \le |C|\);isConstant(i, j)::
sprawdź, czy w podciągu C[i..j] wszystkie elementy są takie same, \(1 \le i \le j \le |C|\);mostCommon::
podaj wartość najczęściej pojawiającego się elementu w ciągu C (w przypadku kilku takich elementów wystarczy podać wartość tylko jednego z nich).
Zadanie 2 [7 punktów]#
Na początkowo pustej szachownicy o wymiarach \(N\times N\) dwaj gracze na przemian stawiają białe i czarne pionki. Gdy dwa pionki o tym samym kolorze znajdą się obok siebie (w przypadku powstania kilku takich par pionków wybieramy TYLKO JEDNĄ, dowolną z nich), zdejmujemy postawiony dopiero co pionek i zmieniamy kolor drugiego pionka w parze na przeciwny. Jeśli powstała w ten sposób co najmniej jedna nowa para sąsiednich pionków o tym samym kolorze, to postępujemy podobnie jak poprzednio - zdejmujemy dopiero co przekolorowany pionek, a jego sąsiada w parze kolorujemy na kolor przeciwny. Proces ten kontynuujemy, aż nie będzie sąsiednich pionków tego samego koloru. Podaj zamortyzowany koszt jednego posunięcia w grze, gdy postawienie pionka, zdjęcie pionka z planszy, zmiana koloru pionka są operacjami jednostkowymi.
Dokonaj analizy kosztu zamortyzowanego
[3 punkty] metodą księgowania;
[4 punkty] metodą funkcji potencjału.
Zadanie 3 [6 punktów]#
[3 punkty] Ile jest permutacji kluczy 1,2,3,4,5,6,7, które po wstawieniu do początkowo pustego (zwykłego) drzewa BST dadzą w wyniku pełne drzewo binarne?
[3 punkty] Ile jest permutacji kluczy 1,2,3,4, które po wstawieniu do początkowo pustego (zwykłego) drzewa BST dadzą w wyniku drzewo AVL?
W każdym przypadku uzasadnij poprawność zaproponowanego rozwiązania i dokonaj analizy czasowej złożoności obliczeniowej zaprojektowanych algorytmów..