1 / 12

IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM. OMÓWIENIE ZADAŃ. Problem B – Wędrujący klocek. Cechy klocka: Pozycja Położenie, np. lewy, dolny róg Cechy trasy: Pola odwiedzone przez klocek Ruch: Cztery możliwości. Pozycja 1. Pozycja 2. Pozycja 3.

rolf
Télécharger la présentation

IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IV OTWARTE MISTRZOSTWA OPOLAW PROGRAMOWANIU ZESPOŁOWYM OMÓWIENIE ZADAŃ

  2. Problem B – Wędrujący klocek • Cechy klocka: • Pozycja • Położenie, np. lewy, dolny róg • Cechy trasy: • Pola odwiedzone przez klocek • Ruch: • Cztery możliwości Pozycja 1 Pozycja 2 Pozycja 3 3 pozycje x 4 kierunki = 12 wariantów

  3. Problem B – Wędrujący klocek • Kolejny ruch: • Wyznacz nową pozycję • Wyznacz nowe położenie klocka • Dodaj zajmowane przez klocek pola do listy pól odwiedzonych Pozycja 1 Pozycja 2 Pozycja 3 N, y++ W, x-=dl_kl Pozycja 2 E, x++ S, y- - W, x- - E, x+=dl_kl Pozycja 1 S, y- - N, y+=dl_kl S, y-=dl_kl W, x- - N, y++ Pozycja 3 Ile razy najczęściej klocek znajdował się na jednym polu? Listę odwiedzonych pół przeszukujemy w czasie kwadratowym szukając współrzędnych, które występują najczęściej E, x++

  4. Problem C – Zagnieżdżone podzbiory Gramatyka bezkontekstowa definiująca zagnieżdżony zbiór liczb naturalnych: Produkcje gramatyki L  { E D Lista E  N | L Element listy D  , E D |} Rozwinięcie listy N  NC | C Liczba naturalna C  0 | 1 | 2 | … | 9 Cyfra {1,2,{3,4,{5,6},7,8}} Przykładowe słowo realizowane przez gramatykę Reguły konstrukcji parsera dla gramatyk bezkontekstowych: A  B CA() { B() C() } A  B | C A() { Jeżeli (Pierwszy symbol (B) = s1) B() W przeciwnym wypadku jeżeli (Pierwszy symbol (C) = s2 ) C() W przeciwnym wypadku Błędne słowo } A  sA() { Jeżeli (symbol = s) Czytaj kolejny symbol W przeciwnym wypadku Błędne słowo }

  5. Problem C – Zagnieżdżone podzbiory Reguły realizacji parsera tej gramatyki – konstrukcja funkcji odpowiadających poszczególnym produkcjom Lista() L  { E D { Jeżeli (symbol = { ) Czytaj kolejny symbol W przeciwnym razie Błędne słowo Element_listy() Rozwinięcie_listy() } Element_listy() E  N | L { Jeżeli (symbol = { ) Lista() w przeciwnym razie jeżeli (Liczba naturalna) Przeczytaj tę liczbę w przeciwnym razie Błędne słowo }

  6. Problem C – Zagnieżdżone podzbiory Rozwinięcie_listy() D  , E D |} { Jeżeli (symbol = , ) Czytaj kolejny symbol Element_listy() Rozwinięcie_listy() w przeciwnym razie jeżeli (symbol = } ) Czytaj kolejny symbol w przeciwnym razie Błędne słowo } Analizuj_słowo() { Czytaj pierwszy symbol Lista() Jeżeli (przeczytane są wszystkie symbole) Poprawne słowo w przeciwnym razie Błędne słowo }

  7. Problem A – Terytorium • Niech AMNbędzie tablicą, w której • Jeżeli działka na pozycji (i, j) jest wolna, to A[i, j] = maksymalna powierzchnia wolnego prostokąta o wysokości 1 i skrajnej prawej działce na pozycji (i, j). • Jeżeli działka na pozycji (i, j) jest zajęta, to A[i, j] = 0. • A = Mając tablicę A łatwo możemy wyznaczyć maksymalny wolny obszar prostokątny o narożniku na pozycji (i, j). Wszystko można robić równocześnie z wczytywaniem danych . Złożoność O(M2N). Jest możliwa optymalizacja ze względu na kolejność M i N.

  8. Problem D – Cięcie kwadratu F(xF,N) D(0,N) C(N,N) E(N,yE) A(0,0) B(N,0) AE = [N; yE] ; EF = [xF – N; N – yE] AE EF  N(xF – N) + yE(N – yE) = 0 skąd: xF = N – yE + yE2/N i zadanie już nie jest geometryczne. Szukamy odpowiedzi na pytanie: dla jakich całkowitych i(1 ≤ i ≤ N – 1) wyrażenie i2/Njest całkowite? Jeżeli N ma następujący rozkład na czynniki pierwsze: Odpowiedzią jest 8(r – 1) to i musi być postaci:

  9. Problem E – Wielokąty kratowe Z twierdzenia Picka : W = P – B/2 +1 • Wystarczy obliczyć: • pole P wielokąta • liczbę B punktów kratowych na brzegu wielokąta Uwaga! Wartości iloczynów xiyi+1 lub xi+1yi mogą przekraczać zakres typu long.

  10. Problem F – Jak dojechać? Szukamy takiego v aby: (av4+ bv3+ cv2+ dv) * (s / v) = m tzn. szukamy miejsca zerowego funkcji f(v) = s(av3+ bv2+ cv+ d) – m Można zastosować dowolną metodę, np. bisekcji; Newtona.

  11. Problem G – Nieuczciwa gra Załóżmy, że A1 < A2 < A3 oraz B1 < B2 Tylko poniższe przypadki pozwalają zawsze wygrać: 1. A1 < A2 < A3 < B1 < B2 - trzecią kartą może być najniższa spośród pozostałych w talii 2. A1 < B1 < A2 < A3 < B2 - wybieramy najniższą większą od A3 (nie istnieje, gdy A3=51) 3. B1 < A1 < A2 < A3 < B2 - jw. 4. A1 < A2 < B1 < A3 < B2 - wybieramy najniższą większą od A2 (nie istnieje, gdy A2=49) 5. A1 < A2 < B1 < B2 < A3 - jw.

  12. Problem H – Krecia robota Jeśli kopczyki są wierzchołkami grafu, a tunele je łączące – krawędziami, to taki graf jest drzewem. Wniosek: najkrótsza droga jest jedyną drogą łączącą dowolne dwa wierzchołki. Kopczyk poprzedzający nowoutworzony kopczyk możemy nazwać jego rodzicem. Zadanie sprowadza się do znalezienia wspólnego przodka wierzchołków S i T. Sposób numerowania wierzchołków (w grafie skierowanym odpowiada to posortowaniu topologicznemu) pozwala na prosty zapis algorytmu, którego główna część ma postać: if(A[S]<A[T]) {dist+=L[T]; T=A[T]; } else{dist+=L[S]; S=A[S]; } 7 2 8 1 9 Złożoność O(m) , gdzie m – liczba krawędzi. 0 3 3 2 4 5

More Related