MWPZ 2006 Przegląd rozwiązań
A – Ciążowy Specjalista (zadanie) Moment poczęcia dziecka odbywa się w aktualnej chwili Matka jest o X lat starsza od dziecka (w chwil, gdy dziecko się urodzi) Za Y lat (od chwili obecnej) dziecko będzie Z razy młodsze niż matka Obliczyć długość ciąży c
A – Ciążowy Specjalista (rozwiązanie) Wiek matki za Y lat: X + Y – c Wiek dziecka za Y lat: Y – c Z(Y – c) = X + Y - c Złożoność czasowa - O(1)
B – Przedziały (zadanie) Znaleźć wartość funkcji f na sumie i iloczynie podanych zbiorów.
B – Przedziały (rozwiązanie) Dla każdego z przedziałów: znaleźć największy przedział o końcach całkowitych, który jest zawarty w danym przedziale, zwiększyć o jeden wartość w tablicy na pozycji odpowiadającej lewemu końcowi przedziału, zmniejszyć o jeden wartość w tablicy na pozycji odpowiadającej prawemu końcowi przedziału. Przejść tak otrzymaną tablicę od strony lewej do prawej, dodając za każdym razem element w aktualnym indeksie tablicy do licznika. W każdym momencie wartość licznika oznacza liczbę przedziałów, które zawierają dany punkt. Złożoność czasowa - O(N)
C – Autobus (zadanie) Do autobusu wchodzą po kolei naukowcy Każdy z nich zajmuje takie miejsce, które gwarantuje mu największą odległość do pozostałych naukowców W przypadku remisu wybierane miejsce najbliżej wejścia
C – Autobus (rozwiązanie) Każdy ciągły przedział miejsc wrzucamy na stóg (kopiec) Kiedy przychodzi kolejny naukowiec ściągamy ze stogu przedział, który jest najbliżej wejścia i gwarantuje najmniejszą odległość Dzielimy go na dwie części, które wrzucamy na stóg Złożoność czasowa - O(N log N)
D – Imieniny (zadanie) Jaś ma L - 1 kolegów Musi wśród nich rozdać C cukierków, każdemu po równo Czy coś mu zostanie?
D – Imieniny (rozwiązanie) Jeżeli L = 1 to Jaś jest sam w klasie i zawsze zostaną mu cukierki (C > 0) Jeżeli L > 1 to Jasiowi zostaną cukierki wtedy i tylko wtedy, gdy C mod L - 1 = 0. Złożoność czasowa - O(1)
E – Poćwiartowany Placek (zadanie) Dane jest k prostych (k ≤ 1000), które dzielą prostokąt o rozmiarach n x m. Znaleźć liczbę wielokątów, na jaki został podzielony prostokąt i wypisać pole powierzchni k największych z nich. 0.5 1 1.75 2
E – Poćwiartowany Placek (rozwiązanie) Znaleźć punkty przecięcia się prostych i połączyć razem te, które znajdują się w tym samym miejscu. Posortować w każdym punkcie przyległe krawędzie, tak aby wyznaczyć dla każdej krawędzi kolejną krawędź przy obrocie w prawo albo w lewo względem tego punktu
E – Poćwiartowany Placek (rozwiązanie) Znając kolejność krawędzi w każdym punkcie możemy przejść każdą krawędź „pod prąd” oraz „z prądem”, w taki sposób, że przejdziemy cykl. Krawędzie tego cyklu będą kolejnymi krawędziami jednego z powstałych wielokątów. Korzystając z odpowiedniej formuły łatwo znaleźć pola takich wielokątów. Złożoność czasowa - O(N2 log N)
F – Kostka Rubik (zadanie) Mamy daną nie ułożoną kostkę Rubika, kostkę da się ułożyć. Podać sekwencję obrotów, która ją układa 1 4 2 3 5 6 1 2 3 4 5 6
F – Kostka Rubik (rozwiązanie) W zadaniu można zastosować praktycznie dowolny poprawny algorytm. W literaturze opisane jest wiele różnych algorytmów, w rozwiązaniu zaimplementowano jeden z powszechnych algorytmów. Rozwiązanie w czasie O(1) – ilość ruchów ograniczona przez stałą.
F – Kostka Rubik (rozwiązanie) Ułożenie boków na ściance górnej 1 4 2 3 5 6 DDFlflDLFFDRRDBB 2 1 6 3 4 5
F – Kostka Rubik (rozwiązanie) Ułożenie wierzchołków na ściance górnej 2 1 6 3 4 5 LDldfdFFDfdrdRDbdBDldL 1 2 3 4 5 6
F – Kostka Rubik (rozwiązanie) Ułożenie boków na ściankach L, F, R i B 1 2 3 4 5 6 LDldfdFfdFDLDlFDfdrdRrdRDFDfdrdRDFDfFDfdrdRbdBDRDrbdBDRDrRDrdbdBDldLDBDbDldLDBDbBDbdldL 1 2 3 4 5 6
F – Kostka Rubik (rozwiązanie) Ułożenie boków na ściance D w odpowiedniej pozycji 1 2 3 4 5 6 FLDldf 1 2 3 4 5 6
F – Kostka Rubik (rozwiązanie) Ułożenie boków na ściance D 1 2 3 4 5 6 ddddFFufBRRFbDDUFF 1 2 3 4 5 6
F – Kostka Rubik (rozwiązanie) Ułożenie wierzchołków na ściance dolnej 1 2 3 4 5 6 DRdlDrdL 1 2 3 4 5 6
F – Kostka Rubik (rozwiązanie) Ułożenie wierzchołków na ściance dolnej w odpowiedniej pozycji 1 2 3 4 5 6 UFufUFufDFUfuFUfuDDddd 1 2 3 4 5 6
G – Billboardy (zadanie) Mamy dany graf (V, E), który opisuje miasto w którym wszystkie drogi mają długość nieparzystą i wszystkie cykle mają parzystą liczbę kilometrów. Wszystkie cykle mają parzystą liczbę krawędzi. Każdy wierzchołek ma Xi miejsc na reklamy. Znaleźć minimalną ilość różnych reklam, jaką możemy przydzielić do każdego miejsca na reklamę, tak aby żadne dwie dwa miejsca w tym samym wierzchołku albo w wierzchołku sąsiednim nie były takie same.
G – Billboardy (rozwiązanie) Graf o parzystej długości każdego z cyklów jest grafem dwudzielnym. Minimalna liczba reklam m spełnia warunek: Jednocześnie istnieje przydział, który gwarantuje właśnie taką liczbę reklam: Jest to minimalna liczba reklam. Złożoność czasowa - O(N + M) 7 6 5 1 2 3 7 6 5 4 1 2 3
H – Konkurs Pseudomatematyczny (zadanie) Dany jest ranking punktów osiągnięty przez pewnych zawodników. Mamy go uporządkować tak, że najlepsi są na początku a reszta pozycji ułożona w od najmniejszej do największej liczby punktów.
H – Konkurs Pseudomatematyczny (rozwiązanie) Należy posortować punkty nierosnąco i wypisać największe elementy na początku. Złożoność czasowa - O(N log N), O(N2)
I – Podróż przed Bożym Narodzeniem (zadanie) Należy znaleźć drogę o długości T w multigrafie ważonym, która rozpoczyna się w wierzchołku P i kończy w wierzchołku K.
I – Podróż przed Bożym Narodzeniem (rozwiązanie) Programowanie dynamiczne Tablica A[t][i] o rozmiarze T x N. Jeżeli A[t][i] = 1, to istnieje droga od wierzchołka P do wierzchołka i w czasie t. Jeżeli A[t][i] = 0 to nie istnieje. Jeśli A[t][i] = 1 to dla każdego sąsiada k: A[t + wik][k] = 1, gdzie wik jest czasem przejazdu z wierzchołka i do wierzchołka k. Jeżeli A[T][K] = 1 to istnieje droga od P do K w czasie T. Poprzez pamiętanie wierzchołków, od których wyszliśmy można odtworzyć ścieżkę. Złożoność czasowa O(TM)